SQLite如果列存在解决方案?

时间:2012-10-21 10:44:56

标签: sql sqlite

我想创建一个处理表中某些列的触发器。

触发器必须处理在此类列不存在时可能发生的错误。

有可能吗?我没有这样的解决方案在网上搜索,因为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不存在,则会出错。

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查询。