在SQLITE中插入触发器后,我遇到了一些更新问题。
在Tab1上插入后我想更新Tab3 if - 插入tab1的事件列在tab2上 - 并且tab3的obj和状态也列在tab2
上tab1 tab2 tab3
date | event event | obj | status obj | status
-----------+--------- ------+-----+------- ----+-------
2014-11-29 | 456 456 | 3 | 1 3 | 1
2014-11-29 | 477 457 | 3 | 2 4 | 2
2014-11-29 | 488 477 | 4 | 1
2014-11-29 | 476 477 | 4 | 2
我为触发器写了下面的create语句:
create trigger uptab3 after insert on tab1 for each row
begin
update tab3
SET status = (SELECT status FROM tab2 WHERE event = NEW.event)
WHERE obj = (SELECT obj FROM tab2 WHERE event = NEW.event)
end
当我在命令行中粘贴它时,sqlite不会返回错误,但不会创建触发器。我在声明中的错误在哪里?
答案 0 :(得分:0)
documentation表明触发器主体中的所有语句都必须以分号结束:
create trigger uptab3 after insert on tab1 for each row
begin
update tab3
SET status = (SELECT status FROM tab2 WHERE event = NEW.event)
WHERE obj = (SELECT obj FROM tab2 WHERE event = NEW.event);
end;