【发布时间】:2014-10-24 17:53:49
【问题描述】:
我正在将 SQL Server 数据库迁移到 Oracle,我必须在其中转换 SQL Server 过程,该过程在 SQL Server 中使用称为 INSERTED 和 DELETED 的特殊表。
据我了解,这些表包含上次插入/删除记录的数据的副本。 (在此处找到 msdn 文章:http://msdn.microsoft.com/en-us/library/ms191300.aspx)
Oracle 中是否有任何类似的表来实现这一点..?请指教。
更新:
感谢您的回答和cmets,我想我需要再解释一下情况。这是了解真实情况的完整故事;
- 数据库包含表和影子表(影子有一个附加列)。
- 更新表时,应在相关影子表中记录相同的更改以及一些附加数据。
- 为此,他们为每个表设置了触发器(这些触发器将数据复制到相关影子表)。
- 上述过程为每个表动态生成这些触发器。
- 现在真正的问题是我不了解列,因为触发器是为每个表动态生成的。
- 基本上我无法获得像 APC 提到的 NEW.col_1 或 OLD.col_1 这样的值。我可以吗?
否则我必须使用前缀手动编写所有这些触发器:NEW 和:OLD,而不是尝试动态生成它们。
我正在使用 Oracle 11g
【问题讨论】:
-
你了解语句级触发器和行级触发器的区别吗? Oracle 中通常不需要
inserted或deleted“表”。使用行级触发器并使用new和old记录直接操作列值。 -
不知道为什么人们认为这是一个 DBA 问题。触发器肯定在程序员的工作范围内。
标签: sql sql-server oracle triggers