触发案例声明问题

时间:2020-05-16 05:11:21

标签: database sqlite triggers

我正在尝试创建一个触发器,该触发器使过大的列根据大小值声明是或否。问题是输入行后该值仍然为空。

create TRIGGER very_large
after INSERT on large
BEGIN
SELECT toolarge, size,
CASE
WHEN size > 50 THEN toolarge = 'yes'
ELSE toolarge = 'no'
END
from large;
END;

1 个答案:

答案 0 :(得分:2)

触发器内的代码是SELECT语句,不会更新表。
您需要一个UPDATE语句:

CREATE TRIGGER very_large
AFTER INSERT ON large
BEGIN
  UPDATE large
  SET toolarge = CASE 
    WHEN NEW.size > 50 THEN 'yes'
    ELSE 'no'
  END
  WHERE rowid = NEW.rowid;
END;

如果表large中有主键,则用该列的名称替换rowid