我是PostgreSQL的新手,想知道是否有办法为多个表调用插入和更新操作创建一个触发器函数?
答案 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
。使用这些元数据,您可以准确定义触发器必须执行的操作,具体取决于调用它的表。
TG_TABLE_SCHEMA
数据类型名称;导致该表的表的名称 触发器调用。
TG_TABLE_NAME
数据类型名称;的名字 导致触发器调用的表的模式。
变量TG_TABLE_SCHEMA
提供了导致触发器被调用的操作:
TG_OP
数据类型文字;一串INSERT,UPDATE,DELETE或TRUNCATE 告诉触发器触发了哪个操作。
其他非常有用的特殊变量是TG_OP
和NEW
。它们包含由数据库操作更改的旧数据和新数据:
OLD
数据类型RECORD;保存新数据库行的变量 行级触发器中的INSERT / UPDATE操作。这个变量是 在语句级触发器和DELETE操作中取消分配。
NEW
数据类型RECORD;保存旧数据库行的变量 行级触发器中的UPDATE / DELETE操作。这个变量是 在语句级触发器和INSERT操作中取消分配。