是否可以在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插入触发器。
答案 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';
注意:NEW
和OLD
引用正在更新的Subscription
表中的行。 OLD
包含更新前的值。 NEW
包含更新后的值。因此,要检查state
是否已更改,您可以比较NEW.State <> OLD.State
。