删除触发器后访问任意元数据

时间:2019-02-21 20:41:38

标签: postgresql

我正在考虑在数据库中创建存档表。

我可以创建一个after after delete触发器,该触发器将把行移动到存档表,但是我需要填充deleted_by字段,该字段具有已删除数据的用户的ID。该用户是我们应用程序中的一个实体,不是内部的postgres用户。

如果postgres可以将一些元数据附加到事务中,那么我可以在触发器内部使用它来填充此字段。也许我可以为此使用变量?是否有解决此问题的解决方案?

1 个答案:

答案 0 :(得分:0)

我建议您编写一个存储过程,该存储过程将行插入到存档表中并将其从表中删除。然后,API将仅使用该过程来删除行。用户ID作为参数传递。
如果有人尝试使用NULL而不是过程,您仍然可以编写一个触发器,使用DELETE用户ID将行插入到存档表中。在这种情况下,存档中的行必须在UNIQUE NULL列中具有原始表的主键,以防止重复。