我在有 100 多列的表上有触发器。 oracle 上是否有任何有效的方法来比较列集并确定新值不等于旧值,而不是检查每一列?
我正在寻找某种独特的数字生成,例如在一组列上的 MAC。然后比较旧的 mac 和新的 mac??
最佳答案
为了更安全,我通常仍然单独测试每一列。这有点痛苦,但我只是使用数据库为我生成代码:
select ':old.'||column_name||' <> :new.'||column_name||' or'
from user_tab_columns
where table_name = 'MY_TABLE';
然后,我复制结果并将其粘贴到我的触发器中(删除末尾多余的“或”)。显然,如果您可以直接执行 :new <> :old 会更好,所以我们希望在下一个 Oracle 版本中可以实现这一点。
关于oracle - 比较大型列集的 PL/SQL 有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20105986/