我有一个包含 2 列的表,名为“Table1”: (第 1 列名为“Col1”,值为:A、B、C、D、E、F) (第 2 列名为“Col2”,值为:12,15,2,5,200,1)。
我希望将第 2 列中的所有值更改为值 1(如果它们的值低于 100),这样第 2 列最终将如下所示: (第 2 列名为“Col2”,值为:1,1,1,1,200,1)。
我尝试创建一个触发器:
delimiter //
CREATE TRIGGER Table1upd BEFORE UPDATE ON Table1
FOR EACH ROW
BEGIN
IF NEW.Col2<100 THEN
SET NEW.Col2=1;
END IF;
END;//
delimiter ;
在 MySQL Workbench 中创建触发器时,它显示触发器已添加,但有 0 行受到影响。
我认为我的问题出在 BEFORE UPDATE 选择上,因为当我更新表中的值时触发器确实可以工作,但我不知道将其更改为什么,以便触发器最初也会在我更新时自动执行创建它。
预先感谢您的帮助, d
最佳答案
答案很简单:a BEFORE UPDATE
触发器仅在 UPDATE
上触发,所以您需要一个第二触发器 BEFORE INSERT
涵盖两个用例:更新和插入:
delimiter //
CREATE TRIGGER Table1insert BEFORE INSERT ON Table1
FOR EACH ROW
BEGIN
IF NEW.Col2<100 THEN
SET NEW.Col2=1;
END IF;
END;//
delimiter ;
关于mysql - 创建触发器后在现有表上触发 MySQL 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20719634/