当我注意到一个有趣的行为时,我在10g中创建了一个新表。这里是我做的一个例子:Oracle独特索引
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会允许将非唯一索引用于主键约束。为什么这是允许的?
+1表示非空注释。 – 2010-04-15 05:02:39