1
假設我有一個表。Mysql觸發器:檢查值實際上是在插入觸發器之前設置的
CREATE TABLE IF NOT EXISTS Test (
Id int(11) NOT NULL AUTO_INCREMENT,
Foo tinyint(1) unsigned NOT NULL DEFAULT 0,
Bar varchar(255) NOT NULL,
PRIMARY KEY (Id)
);
和INSERT觸發器之前:
DROP TRIGGER IF EXISTS `test_update`;
DELIMITER //
CREATE TRIGGER `test_update` BEFORE UPDATE ON `Test`
FOR EACH ROW BEGIN
IF NEW.Foo IS NULL THEN
-- do something
END IF;
END
//
DELIMITER ;
通過觸發我是否Foo
列實際上是傳遞到update語句。否則我會做點什麼。
我的查詢:
UPDATE Test
SET Bar = '23'
WHERE Id = 1;
如何正確檢測美孚沒有設置?
您的觸發器asssigning 「酒吧」值,而不是「FOO」值。你確定這裏發生的事情不應該發生嗎? –
感謝您的評論。是,我確定。 'Foo'是一個標誌,在更新語句中缺少的是以另一種方式處理'Bar'列的條件(在簡單的例子中 - 只需重寫爲'Hello world') – userlond
從我所知道的,新舊值對於'Foo'應該總是一樣的。 –