我有两个要在Postgres SQL中执行的动作 a)每当修改表时,将修改前的行移至历史表。 b)在修改后的实际表上,使用当前的datetimestamp更新修改的on列。
我已经能够使用两个单独的触发器来完成这两个任务,但是我们知道触发器会增加一些性能开销,因此寻找一种在一个函数中管理这两个任务的解决方案,可以使用一个触发器来调用它。
到目前为止,我已经创建了两个函数和两个单独的触发器来实现我的目标,但对过程并不满意,因此需要一些帮助
CREATE TRIGGER <trigger_name> AFTER UPDATE
ON <table_name> FOR EACH ROW
EXECUTE PROCEDURE <procedure_name>();
CREATE OR REPLACE FUNCTION <procedure_name>()
RETURNS trigger
LANGUAGE plpgsql
AS
BEGIN
insert into <history_table_name>(column1, column2, .......)values(old.column1,old.column2, .......);
RETURN old;
END;
CREATE TRIGGER <trigger_name> BEFORE UPDATE
ON <table_name> FOR EACH ROW
EXECUTE PROCEDURE <procedure_name>();
CREATE OR REPLACE FUNCTION <procedure_name>()
RETURNS trigger
LANGUAGE plpgsql
AS
BEGIN
new.recordmodifiedon = now();
RETURN new;
END;
使用上述两个功能我可以达到预期的效果,但是我想将它们作为一个功能组合在一起,以便只有一个触发器调用可以同时执行这两个功能。