postgresql - Postgres 中是否有任何已定义的函数可以让您知道什么操作会触发触发器?

标签 postgresql plpgsql database-trigger

我想在 Postgres 中执行一个触发器,它将更新日志。当更新、插入或删除完成时,我的触发器将触发。

CREATE TRIGGER tr_usuario
    BEFORE INSERT OR DELETE OR UPDATE 
    ON public.usuario
    FOR EACH ROW
    EXECUTE PROCEDURE public.actualizarlog();

由于我的触发器是由这三个操作中的任何一个触发的,因此我无法具体知道哪个操作触发了触发器,但在我的日志中我也想保存已执行的操作。 Postgres 中是否有任何定义的函数可以让我知道什么操作会触发触发器?

最佳答案

有一个特殊变量TG_OP,它表示导致触发器触发的操作。它是一个字符串,分别为 INSERTUPDATEDELETETRUNCATE。另请参阅:"42.10.1. Triggers on Data Changes"

关于postgresql - Postgres 中是否有任何已定义的函数可以让您知道什么操作会触发触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62501223/

相关文章:

sql - Postgresql在BEGIN附近创建函数语法错误

sql - 这个查询触发器有什么问题?

Oracle 12c 在带有外键的表上使用 onDelete 触发器和 onDelete 级联 setNull 抛出 ORA-00600 : Internal Errorcode, 参数:[13001]

python - 使用 sqlalchemy 和 psycopg2 将数据帧推送到 postgres

java - 为什么我从 Java 批量执行 PostgreSQL 上的存储过程时收到错误通知 "a result was not expected"?

ruby-on-rails - 如何找到本地 postgres 数据库的 URL 路径?

arrays - 如何在 postgres 的 where 子句中调用声明的数组变量?

sql-server - SQL 服务器 : option to specify if Update Transaction was from trigger?

sql - 为并发事务中执行的 INSERT 获取不同的行集

django - 电子邮件已保存到谁知道的位置,但未找到关系