【发布时间】:2012-11-25 17:30:18
【问题描述】:
我想写一个关于建表的日志系统。我希望如果有人想更改构建表记录,则执行触发器。触发任务写入 building_log 表,在 building 表中要更改的列。重要提示:建表不受此操作的影响。是否有可能,当有人想更改建筑表但建筑表不影响此操作时,我会收到通知。
【问题讨论】:
我想写一个关于建表的日志系统。我希望如果有人想更改构建表记录,则执行触发器。触发任务写入 building_log 表,在 building 表中要更改的列。重要提示:建表不受此操作的影响。是否有可能,当有人想更改建筑表但建筑表不影响此操作时,我会收到通知。
【问题讨论】:
听起来您只是在寻求“触发”:您可以阅读它们的相关信息in the excellent Concepts guide。
但是 Oracle 有一个内置功能可以满足您的需求,称为 Flashback Data Archive — 如果您可以使用它,我建议您研究一下。
--- 编辑:
好的,我想我误读了这个问题。您想静默阻止更新。不管这是否是一个好主意,对于before update 触发器,您可以使用原始:old 值覆盖:new 值。没有简单的方法可以用insert 做类似的事情,但我不认为你要求这样做。
如果您真的需要静默防止插入,也许您可以考虑向用户公开视图而不是表本身,并创建 instead of 触发器
【讨论】: