postgresql - 插入或更新或删除后的postgresql触发器
问题描述
我有一个名为 mdl_user 的表,我为此表添加了一个新列,第一个名为“LastOperation”,第二个名为“TimeStamp”
我需要在插入或更新或删除后创建触发器,并将输出写入“LastOperation”列中的“I”或“U”或“D”,以及此操作发生在“TimeStamp”列的时间
注意:所有这些东西都在同一个表中,不会被另一个表触发
解决方案
你可以得到你想要的并且仍然使用标准的 DML(包括删除)。然而,它确实需要对数据库对象进行一些幕后操作。它所涉及的不是针对表而是针对可更新视图执行 DML。
- 像往常一样将新列添加到表中。
- 重命名表。对 mdl_user_tab 说。
- 创建一个与旧表具有相同名称和定义的 VIEW。从新表名中简单选择(无连接)。
- 创建一个解释 DML 操作实际表的触发器函数。
- 为针对 VIEW 的所有 DML 操作创建一个 INSTEAD 触发器。
现在,您可以根据视图处理所有内容(大多数现有代码不需要更新)。但是您可能需要一些额外的功能来实际处理表格。请参见此处的示例。
推荐阅读
- c# - C# 0xC0000005(访问冲突)可能的修复?
- git - git rebase 冲突,如何删除在 HEAD 中删除的所有冲突文件
- wpf - 是否可以在多个按钮中使用相同的资源样式并在 XAML 中的 IsMouseOver 事件上单独更改背景图像
- java - 临时缓冲区的 Netty 引用计数
- amazon-web-services - 使用 AWS-Lambda 实现 AWS-Lex
- javascript - 在 innerHTML 中加载脚本
- c - 'atm' 模拟器
- php - Slim 3 POST 请求数据不可访问
- javascript - 如何根据vue中的另一个选择更改选择?
- scala - sbt 找不到启动器 jar:./bin/sbt-launch.jar