我想创建一个处理表中某些列的触发器。
触发器必须处理在此类列不存在时可能发生的错误。
有可能吗?我没有这样的解决方案在网上搜索,因为SQLite中不存在“if exists”命令。
修改 触发器示例(在评论中请求):
CREATE TRIGGER trigger_name
AFTER UPDATE ON table_1
BEGIN
IF exist (select col_1 from table_1)
BEGIN
update table_1 set col_1='1' where id = '2'
END
END
如果col_1不存在,则会出错。
答案 0 :(得分:2)
在SQLite中,triggers can execute only normal SELECT/INSERT/UPDATE/DELETE commands;没有任何编程结构,如IF
。
如果你想要执行动态代码,你必须注册自己的用户定义函数(如何完成这取决于你正在使用的语言/驱动程序),并从触发器调用它:
CREATE TRIGGER name
AFTER UPDATE ON table_1
BEGIN
SELECT my_custom_function();
END
在您的函数中,您可以使用PRAGMA table_info
查询检查表结构并执行UPDATE
查询。