对于每个语句和触发器后的每一行 return 值

for each statement and for each row after triggers return value

我正在使用 Plpgsql 语言在 Postgres 中学习触发器,但我不完全理解 for each statement 触发器和 for each row after 触发器函数是如何工作的。

在每一行触发器之前有3个return值:NEW表示要执行的INSERT/UPDATE操作,OLD表示要执行的DELETE操作,NULL表示不执行任何操作。

对于每个语句和触发器函数后的每一行,唯一可能的 return 值为 NULL,所以我的问题是:

-in for each statement trigger,如何判断是否要执行table上的INSERT/UPDATE/DELETE操作?

-在触发后的每一行中,如何判断是否要回滚?

  • 您不能在语句级触发器中指定要跳过数据修改

  • 在触发器中强制ROLLBACKRAISE异常