我正在尝试创建一个触发器,该触发器使过大的列根据大小值声明是或否。问题是输入行后该值仍然为空。
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;
答案 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
。