【问题标题】:SQLITE3 update after insert trigger will not be created不会创建插入触发器后的 SQLITE3 更新
【发布时间】:2015-01-28 13:33:54
【问题描述】:

我在 SQLITE 中插入触发器后更新时遇到了一些问题。

在 Tab1 上插入后,我想更新 Tab3,如果 - 插入到 tab1 的事件列在 tab2 上 -tab3的obj和status也列在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 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 不会返回错误,但不会创建触发器。我在声明中的错误在哪里?

【问题讨论】:

    标签: sql sqlite triggers


    【解决方案1】:

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-01
      • 2018-12-10
      • 1970-01-01
      • 2014-07-02
      • 2021-03-08
      • 2020-08-23
      • 2013-06-11
      • 1970-01-01
      相关资源
      最近更新 更多