1

我有一个想法要在 sqlite3 中实现。可以在触发器更改表中使用 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 是非常简单且特定的简单数据库,所以我不知道该怎么做……我尝试转换为文本并与 '' 连接。

4

2 回答 2

2

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

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

CREATE TRIGGER add_something
AFTER INSERT ON simple_table 
BEGIN
    SELECT my_function(NEW.simple_name);
END;
于 2013-11-09T22:17:11.683 回答
1

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

于 2013-11-09T22:17:03.600 回答