从多个表POSTGRESQL调用动态触发器函数

时间:2015-06-01 20:03:30

标签: postgresql triggers

我是PostgreSQL的新手,想知道是否有办法为多个表调用插入和更新操作创建一个触发器函数?

1 个答案:

答案 0 :(得分:1)

是的,您可以创建一个触发器过程并从不同的表中调用它。在触发器过程中,您可以访问几个特殊变量,这些变量提供有关调用触发器的表的元数据,即In [154]: df.fillna(df.mean(axis=1).T, axis=0) Out[154]: 0 1 2 A 1.5 1.0 2.0 B 3.0 3.5 4.0 C 5.0 6.0 5.5 TG_TABLE_NAME。使用这些元数据,您可以准确定义触发器必须执行的操作,具体取决于调用它的表。

来自documentation

  

TG_TABLE_SCHEMA数据类型名称;导致该表的表的名称   触发器调用。

     

TG_TABLE_NAME数据类型名称;的名字   导致触发器调用的表的模式。

变量TG_TABLE_SCHEMA提供了导致触发器被调用的操作:

  

TG_OP数据类型文字;一串INSERT,UPDATE,DELETE或TRUNCATE   告诉触发器触发了哪个操作。

其他非常有用的特殊变量是TG_OPNEW。它们包含由数据库操作更改的旧数据和新数据:

  

OLD数据类型RECORD;保存新数据库行的变量   行级触发器中的INSERT / UPDATE操作。这个变量是   在语句级触发器和DELETE操作中取消分配。

     

NEW数据类型RECORD;保存旧数据库行的变量   行级触发器中的UPDATE / DELETE操作。这个变量是   在语句级触发器和INSERT操作中取消分配。