不会创建插入触发器后的SQLITE3更新

时间:2014-11-30 12:31:19

标签: sql sqlite triggers

在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不会返回错误,但不会创建触发器。我在声明中的错误在哪里?

1 个答案:

答案 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;