postgresql - 如何在 PostgreSQL 触发器函数中获取表名?

标签 postgresql triggers synchronization

我有一个触发函数:

CREATE OR REPLACE FUNCTION "trigger_deleteUsers"()
RETURNS trigger AS
$BODY$
BEGIN
    INSERT INTO "DeletedEntities" ("uuidKey", "dateCreated", "dateModified", "dateSynced", "username", "entityName")
         VALUES (OLD."uuidKey", OLD."dateCreated", OLD."dateModified", "dateSynced", OLD."username", 'Users');
    RETURN NULL;
END;
$BODY$
LANGUAGE plpgsql;

CREATE TRIGGER "deleteUsers" AFTER DELETE ON "Users" FOR EACH ROW EXECUTE PROCEDURE "trigger_deleteUsers"();

这适用于“用户”表。每次我从“用户”表中删除一行时,数据库都会在表“DeletedEntities”中插入一行(“uuidKey”、“dateCreated”、“dateModified”、“dateSynced”、“username”、“entityName”)稍后我将用于同步目的。

以上作品。这是我的问题,我有大约两打 table 。我知道我需要在每个表上创建触发器,但我不想为每个表创建自定义触发器函数。与上面的第一个函数唯一不同的是函数内 INSERT 语句中的最后一个值;而不是“用户”,它将是“分类帐”或“日志”或其他任何内容。

在 PostgreSQL 触发器函数中,如何获取旧行所属表的名称?

最佳答案

TG_TABLE_NAME。有关其他触发器参数,请参阅文档:http://www.postgresql.org/docs/current/static/plpgsql-trigger.html

关于postgresql - 如何在 PostgreSQL 触发器函数中获取表名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18049815/

相关文章:

image - 如何从 docker hub 向官方 postgres 图像添加更多功能?

c# - 在 PostgreSQL 中使用特定模式的 Linq 和实体迁移

sql - 应该更新日期不执行的postgres函数

mysql - Mysql 多操作触发器上出现错误 1064

java - 如何通知 Glassfish 3.1 集群中的所有(相同)单例 bean ?

postgresql - 无法在 docker 中为 postgres 添加架构

java - 在 liquibase 上用 JSON 内容重构数据库

postgresql - 如何创建一个通常在条目更新之前的条目后运行的函数?

c++ - C++ 并发中的内存可见性(无数据竞争)

c# - 这个锁使用线程安全吗?