所以我是使用程序和触发器的新手,这让我很困惑
我使用了temporal tables
,并且希望基本上创建一个插入,更新或删除的记录的历史表。
事实上我已经创建了我的历史表,当我使用这个触发器sql
时工作正常DROP TRIGGER if exists versioning_trigger on mytable;
CREATE TRIGGER versioning_trigger BEFORE INSERT OR UPDATE OR DELETE ON mytable FOR EACH ROW EXECUTE PROCEDURE versioning('sys_period', 'table_history', true);
这会创建更新或删除的行的记录,将旧行记录从mytable
精确复制到table_history
表并更新mytable
中的记录。但我想插入更新的记录从mytable
到table_history
,以便它包含所有类型的记录('当前有效记录'以及更新前的记录')。还插入其他一些记录执行触发器时table_history
中的字段。
我想问一下
CREATE TRIGGER
查询中一起使用不同的触发事件(BEFORE或AFTER)?table_history
中插入新的字段值来执行触发器?我怎么能做到这一点?答案 0 :(得分:0)
https://www.postgresql.org/docs/current/static/plpgsql-trigger.html
使用CREATE FUNCTION命令创建触发器过程, 将它声明为没有参数和返回类型的函数 触发
以及
https://www.postgresql.org/docs/current/static/sql-createtrigger.html
确定是在之前,之后还是之后调用该函数 事件。
NEW
代替OLD
获取新值https://www.postgresql.org/docs/current/static/plpgsql-trigger.html
NEW
数据类型记录;保存新数据库行的变量 行级触发器中的INSERT / UPDATE操作。这个变量是 在语句级触发器和DELETE操作中取消分配。