我有一个名为“Table1”的2列表: (第1列名为“Col1”,其值为:A,B,C,D,E,F) (第2列命名为“Col2”,其值为:12,15,2,5,200,1)。
如果它们的值低于100,我希望将第2列中的所有值更改为值1,以便第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工作台中创建触发器时,它表示已添加触发器,但影响了0行。
我认为我的问题在于BEFORE UPDATE选项,因为当我更新表中的值时触发器确实有效,但是我不知道要将其更改为什么,以便触发器最初也会自动执行创造它。
提前感谢您的帮助, d
答案 0 :(得分:0)
答案很简单: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 ;