从函数返回的触发器如何影响 BEFORE 或 AFTER 语句?

How does returned trigger from function affects BEFORE or AFTER statement?

我在理解 sql 中的函数和触发器时遇到了一些问题。我没有 post 程序 chkInsertAritcle 的代码,但如果它设法进行更改,则可以说它是 returns NEW,如果没有,则为 NULL。

所以我的问题是关于触发器的。如果我放 AFTER INSERT 是否意味着它将完成 INSERT 而不依赖于 return 值?还有什么 其余行会发生什么情况?

下一个问题是如果我把 BEFORE INSERT 放在代码运行顺序是什么?

谢谢!

CREATE TRIGGER ArticleIns
AFTER INSERT ON ListOfArticles
FOR EACH ROW
EXECUTE PROCEDURE chkInsertArticle();

因此,如果触发器在插入之前运行,则代码在将数据插入行并检查约束之前运行。因此,例如,您可能希望在数据提交到数据库之前添加一个时间戳,

如果它在此之后运行,则数据已经存在于 table 中并且所有约束都已检查。这通常是您要根据行数据触发另一个进程的地方,可能更新另一个 table、发送 e-mail 等

在您的示例中,数据将在您的过程运行之前存储在数据库中。因此,如果您的过程修改了行数据,则它需要在数据库中。

首先所有BEFORE按字母顺序触发运行,然后执行操作,然后所有AFTER按字母顺序触发运行。

每个操作都将前一个操作的结果视为输入,如果有任何触发器 returns NULL,则停止对该行的处理。因此,如果 BEFORE 触发 returns NULL,DML 操作将不会发生。

对于受触发 DML 语句影响的每一行,这都是独立发生的。