我有一个想法在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是非常简单和特定的简单数据库所以我不知道如何做到这一点...我尝试转换为文本并与''连接。
答案 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)。