我有一个触发器功能,我在table1上运行BEFORE INSERT。在此功能中,我执行以下操作:
INSERT INTO table2 VALUES(x, y, z);
INSERT INTO table3 VALUES(x, a);
由于某种原因,这些INSERT语句不会运行。我知道正在调用该函数。
更新:
更多信息,我的触发器如下所示:
CREATE TRIGGER update_db
BEFORE INSERT ON table1
FOR EACH ROW
EXECUTE PROCEDURE update_all_db();
我的程序功能做得不多。我所要做的就是上面的一些陈述。
提前谢谢。
答案 0 :(得分:1)
你的陈述背后缺少分号(;
)。
在持久性INSERT
语句中不包含表的列列表是一种自杀行为。如果您将来更改table2
或table3
的表定义,则触发器会在最坏的情况下以静默方式中断或销毁数据。应该是:
INSERT INTO table2(col1, col2, col3) VALUES(x, y, z);
INSERT INTO table3(col1, col2) VALUES(x, a);
但是,这句话不应该“不运行” 此问题是由于您的问题中不的原因造成的。