Sqlite3触发器:添加一列

时间:2013-11-09 19:59:09

标签: sql sqlite

我有一个想法在sqlite3中实现。这可以在触发器alter table中使用new.something的名称添加列吗?

简单的例子:

CREATE TRIGGER add_something AFTER INSERT ON simple_table 
BEGIN:
    ALTER TABLE second_table add column NEW.simple_name int;
END;

当我尝试这个时,我有语法错误。在postgres我只是执行EXECUTE,但sqlite是非常简单和特定的简单数据库所以我不知道如何做到这一点...我尝试转换为文本并与''连接。

2 个答案:

答案 0 :(得分:2)

您不能在触发器中使用ALTER TABLE语句。

要执行动态SQL语句,您必须注册自己的函数,该函数可以执行任何操作:

CREATE TRIGGER add_something
AFTER INSERT ON simple_table 
BEGIN
    SELECT my_function(NEW.simple_name);
END;

答案 1 :(得分:1)

不,这是不可能的。您只能在SQLite触发器中使用INSERT,UPDATE,DELETE和SELECT语句(参见the SQLite documentation on CREATE TRIGGER)。