首页 > 解决方案 > 触发 case 语句问题 sqlite

问题描述

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

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;

标签: databasesqlitetriggers

解决方案


触发器中的代码是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为该列的名称。


推荐阅读