触发条件

时间:2014-01-21 21:28:42

标签: mysql sql triggers

我想创建一个SQL Trigger来评估这样的查询:

IF NOT (SELECT * FROM table1 WHERE table1.id=1 AND table1.finished=0)   
DO 
UPDATE table2 SET finished=1 WHERE table2.id=table1.id

这会告诉我table1中id为1的所有行都已完成(如果没有未完成的(0)行),如果是,则应更新table2并将完成的值设置为1。

任何人都可以帮助我使用Trigger结构吗?谈到这一点,我是新人。

1 个答案:

答案 0 :(得分:0)

你可以这样做

DELIMITER //
CREATE TRIGGER tg_au_table1
AFTER UPDATE ON table1
FOR EACH ROW
BEGIN
  IF NOT OLD.finished <=> NEW.finished THEN
    UPDATE table2 t
       SET finished = (EXISTS(SELECT * 
                                FROM table1 
                               WHERE id = t.id 
                                 AND finished = 0))
     WHERE id = NEW.id;
  END IF;
END//
DELIMITER ;

这是 SQLFiddle 演示

您的其他问题https://stackoverflow.com/a/21270582/1920232

中提供了扩展答案