當我注意到一個有趣的行爲時,我在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