带有UPDATE

时间:2017-09-24 16:56:12

标签: mysql triggers

是否可以在mysql触发器中插入条件类型的更新?如果我需要在某种类型的更新后执行某些操作,例如,如果更新是字段值中某种类型的更改。更好的说,如果我需要在另一个表中增加一个值,之后原始表中的特定字段将其值更改为特定值,是否可能? 任何帮助将不胜感激 我正在尝试这个:

CREATE TRIGGER Increment 
AFTER UPDATE ON Subscription
FOR EACH ROW
BEGIN
UPDATE USER
SET num_sub=num_sub+1
IF NEW.State <> OLD.State AND NEW.STATE='C'
END IF
END

但它不起作用,语法错误。我通过phpmyadmin插入触发器。

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

CREATE TRIGGER Increment 
AFTER UPDATE ON Subscription
FOR EACH ROW
BEGIN
    IF NEW.State <> OLD.State AND NEW.STATE='C' THEN
        UPDATE USER
        SET num_sub=num_sub+1
        WHERE USER.id = NEW.user_id; -- change this condition as you need
    END IF;
END

这也应该有效:

CREATE TRIGGER Increment 
AFTER UPDATE ON Subscription
FOR EACH ROW
    UPDATE USER
    SET num_sub=num_sub+1
    WHERE USER.id = NEW.user_id
      AND NEW.State <> OLD.State
      AND NEW.STATE='C';

注意:NEWOLD引用正在更新的Subscription表中的行。 OLD包含更新前的值。 NEW包含更新后的值。因此,要检查state是否已更改,您可以比较NEW.State <> OLD.State