【发布时间】:2014-09-21 19:53:14
【问题描述】:
假设我在一个表中有 3 列 column_1,column_2,column_3。
我想用 column_1,column_2,column_3 的每个唯一组合的唯一值填充两个新表 table_1.column_unique_ind 和 table_2.column_unique_ind。
我想稍后比较这两列,以检查 column_1、column_2、column_3 的唯一组合。
在这种情况下我可以使用任何内置的 oracle 函数吗?
我想要的是,
- 对于 column_1、column_2、column_3 的任何给定组合, 函数应该总是返回相同的唯一值,任何一天我使用这个函数。
- 对于 column_1、column_2、column_3 的两种不同组合, 函数应该总是返回不同的值
【问题讨论】:
-
哈希值通常不是唯一的。仅使用 UNIQUE 约束保留 3 列有什么问题?
-
是的,我们可以在表上使用唯一键,但是,只是想知道,有没有办法在 Oracle 中获得唯一的哈希值?另外,这样以后,每当我想比较两个表的值时,我的 sql 查询都会变得更简单。
-
column_1,column_2,column_3的相同组合是否可以在原始表中出现多次 - 如果您可以添加唯一约束,可能不会?那么,为什么不只拥有一个合成主键,并将其用作新表中的外键呢?没有特别的原因 key 需要是值的散列,在哪里?