0

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

如果这样的列不存在,触发器必须处理可能发生的错误。

可能吗?我在网上搜索了没有这样的解决方案,因为 SQLite 中不存在“如果存在”命令。

编辑: 触发器示例(在评论中要求):

    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 不存在,它将出错。

4

1 回答 1

2

在 SQLite 中,触发器只能执行普通的 SELECT/INSERT/UPDATE/DELETE 命令;没有任何编程结构,例如IF.

如果您确实想执行动态代码,则必须注册自己的用户定义函数(如何完成取决于您使用的语言/驱动程序),并从触发器中调用它:

CREATE TRIGGER name
AFTER UPDATE ON table_1
BEGIN
    SELECT my_custom_function();
END

在您的函数中,您可以使用查询检查表结构PRAGMA table_info并执行UPDATE查询。

于 2012-10-21T12:25:37.993 回答