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'应该总是一样的。 –