oracle - 比较大型列集的 PL/SQL 有效方法?

标签 oracle plsql oracle11g

我在有 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/

相关文章:

sql - 如何为选择查询中的重复行创建序列号?

sql - 如何迭代嵌套表类型?

sql - Oracle SQL - 检查 sql 数据大小

oracle - 在PL/SQL存储过程中分割逗号分隔的字符串

sql - 比较 2 个表以检查差异

sql - 从不同行中检索组合作为输入 SQL

oracle - 仅触发更改的值

sql - Oracle SQL 中的分号终止

asp.net - Entity Framework 和 Oracle - 如何插入 ID?

oracle - 在存储过程中使用 revoke 时出现错误 PLS-00103