SQL触发器信息

时间:2017-01-07 13:15:28

标签: sql postgresql triggers relational-database

我有一个关于触发器的一般问题。无论如何,对SQL数据库进行编程的方式是,无论何时触发触发器,SQL都会告诉我们删除或编辑了哪些数据行以符合某个标准。在我的情况下,我使用postgreSQL并且我有一个特定的触发器,如果​​满足某个条件,它会删除插入表中的某些行。有什么我可以添加或更改postgreSQL中的设置,这将指示在这种情况下删除了哪些行和删除了多少行:

CREATE TRIGGER unknowns
AFTER INSERT
ON  employees
FOR EACH ROW 
EXECUTE PROCEDURE delete_rows();


CREATE OR REPLACE FUNCTION delete_rows()
RETURNS trigger AS
$BODY$
BEGIN
 DELETE FROM employees WHERE Customer = 'unknown';
 RETURN NEW;
END;   
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;

1 个答案:

答案 0 :(得分:1)

您通常不会在数据库级别执行此操作。

通常,您可以修改触发器以将更改的数据存储在存档/历史记录表中。然后,您将记录已更改的数据,更改的数据以及更改的数据。

如果您特别想了解触发器中已启动的更改,我不确定是否有任何机制可以区分这些更改与用户启动的更改。