2014-01-21 91 views
0

我想作一个SQL触发器,将评估这样的查询:触发条件

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

那会告诉我,从表1中的所有行为1的ID是完成(如果没有未完成(0)行),如果是的话,它应该更新table2并将值设置为1.

任何人都可以帮助我使用触发器结构吗?当谈到这个时,我是新的。

+1

RTFM:http://dev.mysql.com /doc/refman/5.0/en/create-trigger.html –

+0

尝试一下,发布在这里,人们会帮助。我想要的东西它不是一个真正的问题。 – Mihai

+0

@Mihai我的问题中提供的代码是我最好的尝试触发逻辑。谢谢。 – user2703038

回答

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