gpt4 book ai didi

sql - Oracle 唯一索引

转载 作者:行者123 更新时间:2023-12-04 14:19:38 25 4
gpt4 key购买 nike

我今天在 10g 中创建一个新表时发现了一个有趣的行为。这是我所做的一个示例:

CREATE TABLE test_table ( field_1 INTEGER PRIMARY KEY );

默认情况下,Oracle 将为主键创建一个非空唯一索引。我仔细检查了这一点。经过快速检查,我找到了一个唯一的索引名称 SYS_C0065645。到目前为止,一切都按预期工作。现在我这样做了:

CREATE TABLE test_table ( field_1 INTEGER,
CONSTRAINT pk_test_table PRIMARY KEY (field_1) USING INDEX (CREATE INDEX idx_test_table_00 ON test_table (field_1)));

在描述了我新创建的索引 idx_test_table_00 之后,我发现它是非唯一的。尝试往表中插入重复数据,被主键约束阻止,证明功能没有受到影响。 Oracle 允许将非唯一索引用于主键约束对我来说似乎很奇怪。为什么允许这样做?

最佳答案

唯一索引和非唯一索引之间实际上没有结构上的区别,Oracle 可以使用其中任何一个来进行 PK 约束。允许这样的 PK 定义的一个优点是您可以禁用或延迟数据加载的约束 - 这对于唯一索引是不可能的,因此有人可能会争辩说这种实现更灵活。

关于sql - Oracle 唯一索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2640299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com