首页 > 解决方案 > 插入或更新或删除后的postgresql触发器

问题描述

我有一个名为 mdl_user 的表,我为此表添加了一个新列,第一个名为“LastOperation”,第二个名为“TimeStamp”

我需要在插入或更新或删除后创建触发器,并将输出写入“LastOperation”列中的“I”或“U”或“D”,以及此操作发生在“TimeStamp”列的时间

注意:所有这些东西都在同一个表中,不会被另一个表触发

标签: postgresqltriggers

解决方案


你可以得到你想要的并且仍然使用标准的 DML(包括删除)。然而,它确实需要对数据库对象进行一些幕后操作。它所涉及的不是针对表而是针对可更新视图执行 DML。

  1. 像往常一样将新列添加到表中。
  2. 重命名表。对 mdl_user_tab 说。
  3. 创建一个与旧表具有相同名称和定义的 VIEW。从新表名中简单选择(无连接)。
  4. 创建一个解释 DML 操作实际表的触发器函数。
  5. 为针对 VIEW 的所有 DML 操作创建一个 INSTEAD 触发器。

现在,您可以根据视图处理所有内容(大多数现有代码不需要更新)。但是您可能需要一些额外的功能来实际处理表格。请参见此处的示例


推荐阅读