在创建触发器时触发现有表上的MySQL触发器

时间:2013-12-21 13:43:35

标签: mysql triggers

我有一个名为“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

1 个答案:

答案 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 ;