在 postgres 的临时表中的触发器上插入值
insert values on trigger in temporal tables in postgres
所以我不熟悉使用过程和触发器,这让我很困惑
我已经使用了 temporal tables
并想基本上创建插入、更新或删除记录的历史记录 table。
事实上,我已经创建了我的历史记录 table,并且在我使用此触发器时工作正常 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
table并更新mytable
中的记录。但是我想将更新的记录从 mytable
插入到 table_history
,以便它具有所有类型的记录('当前活动记录'和 'record before updation')。还在 [= 中插入一些其他字段13=]当触发器执行时。
我想问
- 如何在 temporal_tables 中的一个
CREATE TRIGGER
查询中同时具有不同的触发事件(之前或之后)?
- 是否可以在触发器执行时在
table_history
中插入新的字段值?我怎样才能做到这一点?
https://www.postgresql.org/docs/current/static/plpgsql-trigger.html
A trigger procedure is created with the CREATE FUNCTION command,
declaring it as a function with no arguments and a return type of
trigger
还有
- 同一触发器不能在事件前后都触发 - 如果您确实需要,只需创建两个触发器
https://www.postgresql.org/docs/current/static/sql-createtrigger.html
Determines whether the function is called before, after, or instead of
the event.
- 使用
NEW
而不是 OLD
作为新值
https://www.postgresql.org/docs/current/static/plpgsql-trigger.html
NEW
Data type RECORD; variable holding the new database row for
INSERT/UPDATE operations in row-level triggers. This variable is
unassigned in statement-level triggers and for DELETE operations.
所以我不熟悉使用过程和触发器,这让我很困惑
我已经使用了 temporal tables
并想基本上创建插入、更新或删除记录的历史记录 table。
事实上,我已经创建了我的历史记录 table,并且在我使用此触发器时工作正常 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
table并更新mytable
中的记录。但是我想将更新的记录从 mytable
插入到 table_history
,以便它具有所有类型的记录('当前活动记录'和 'record before updation')。还在 [= 中插入一些其他字段13=]当触发器执行时。
我想问
- 如何在 temporal_tables 中的一个
CREATE TRIGGER
查询中同时具有不同的触发事件(之前或之后)? - 是否可以在触发器执行时在
table_history
中插入新的字段值?我怎样才能做到这一点?
https://www.postgresql.org/docs/current/static/plpgsql-trigger.html
A trigger procedure is created with the CREATE FUNCTION command, declaring it as a function with no arguments and a return type of trigger
还有
- 同一触发器不能在事件前后都触发 - 如果您确实需要,只需创建两个触发器
https://www.postgresql.org/docs/current/static/sql-createtrigger.html
Determines whether the function is called before, after, or instead of the event.
- 使用
NEW
而不是OLD
作为新值
https://www.postgresql.org/docs/current/static/plpgsql-trigger.html
NEW
Data type RECORD; variable holding the new database row for INSERT/UPDATE operations in row-level triggers. This variable is unassigned in statement-level triggers and for DELETE operations.