0

我有一个在 table1 上插入之前运行的触发器函数。在此功能中,我执行以下操作:

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();

我的过程功能没有多大作用。我要做的只是上面的一些陈述。

先感谢您。

4

1 回答 1

1

;您的语句后面缺少分号 ( )。

INSERT在持久化语句中不包含表的列列表是一种自杀行为。如果您将来更改table2or的表定义table3,触发器会在最坏的情况下静默地破坏或破坏数据。应该:

INSERT INTO table2(col1, col2, col3) VALUES(x, y, z);
INSERT INTO table3(col1, col2) VALUES(x, a);

但这不是该声明应该“不运行”的原因。
这个问题是由于您的问题中没有的东西造成的。

于 2013-05-21T18:20:20.853 回答