- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想了解不同数据库引擎的答案,但在我们的案例中;我们有一些记录对于列来说不是唯一的,现在我们想让该列唯一,这迫使我们删除重复值。我们使用 Oracle 10g。这合理吗?还是类似于 goto 语句 :)?我们真的应该删除吗?如果我们有数百万条记录怎么办?
最佳答案
回答发布的问题:不,它不能在我知道的任何 RDBMS 上完成。
但是,与大多数事情一样,您可以通过执行以下操作来解决它。
使用新列和现有列创建复合键
您可以在不删除任何内容的情况下通过添加新列使其唯一,将其称为 PartialKey。
对于现有行,您将 PartialKey 设置为唯一值(从零开始)。
在现有列和 PartialKey 上创建唯一约束(您可以这样做,因为这些行中的每一行现在都是唯一的)。
对于新行,仅对 PartialKey 使用默认值零(因为零已被使用),这将强制现有列在表中具有唯一值。
重要编辑
这很弱 - 如果您删除具有部分键 0 的行。现在可以使用现有列中已有的值添加另一行,因为部分键中的 0 将保证唯一性。
你需要确保要么
编辑:硬着头皮清理数据
如果正如您所说,您刚刚意识到该列应该是唯一的,那么您应该(如果可能)清理数据。上面的方法是一种 hack,你会发现自己在访问表时编写了更多的 hack(你可能会发现你有两套逻辑来处理针对该表的查询,一套用于列是唯一的,另一套用于不是。我现在就清理它,否则它会回来咬你一千遍。
关于database - DB constraits是否可以忽略已有记录,只申请新数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/479756/
我创建的 MySQL 备份文件是使用 --all-databases 转储的,并且其中包含“CREATE DATABASE IF NOT EXISTS”语句。 我现在有一个全新的 MySQL 实例,我
paragraph
添加到 div 中,但如果该 div 已有 2 个段落,则创建一个新 div我有一个 div .content,里面有两个 div (.content-1, .content-2)。 在 .content 内的 div 中,我只想最多有两个段落。 因此,当我单击“添加”按钮时
我是一名优秀的程序员,十分优秀!