如何在表A更新时使用SQLlite中的触发器在表B上插入行

时间:2018-07-27 02:56:19

标签: sqlite

表A 用户身份 名称

表B 用户身份 时间戳

我需要创建一个触发器,以便在A.Name更改时在表B中插入一行。到目前为止,我有:

创建触发器名称更新          名称更新后             上一个       每行 开始     插入B(                                 用户身份,                                 时间戳记                             )                             值(                                 xxxxxxx,                                 DateTime('now')                             ); END;

XXXXXXX应该是刚刚更改的A.UserID。

1 个答案:

答案 0 :(得分:1)

您可以使用前缀 old. 来引用之前/之后的值(根据相关性,即,对于插入仅是新的,对于更新仅是旧的或新的,而对于删除仅是旧的)。分别 new.

尝试:-

CREATE TRIGGER NameUpdate AFTER UPDATE OF Name ON A FOR EACH ROW 
    BEGIN 
        INSERT INTO B( UserID, Timestamp ) VALUES ( new.UserID, DateTime('now') ); 
    END
;

或(由于用户ID 列未更改,):-

CREATE TRIGGER NameUpdate AFTER UPDATE OF Name ON A FOR EACH ROW 
    BEGIN 
        INSERT INTO B( UserID, Timestamp ) VALUES ( old.UserID, DateTime('now') ); 
    END
;