database - 触发 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;
解决方案
触发器中的代码是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
为该列的名称。
推荐阅读
- video - 如何使用 Raspberry Pi 在 mplayer 上循环播放视频?
- r - 使用 strsplit 模式匹配将字符串扩展到多列
- r - 计算数据框中多列值的频率
- java - 另一个类中的Java调用方法
- python - 运行 python 并行进程
- python - 迭代熊猫系列并格式化日期
- java - 说服 java 通过 SSL 与“localstack”对话
- java - 干净的代码 - 如何打破返回字符串的方法
- sql - 使用“for json auto”将 T-SQL 中结果集的子选择转换为 JSON
- python - Python,遍历 url 列表以解析 html 内容