今天我遇到了一個場景,我觀察到SQL Server實際上允許我們在同一列上創建主鍵約束和唯一約束。我預計它不會在語法上拋出任何錯誤。定義在表的同一列上的主鍵約束和唯一約束
我測試了它,它似乎工作正常。
示例代碼:
CREATE TABLE testtable
(
id INT IDENTITY(1,1),
name VARCHAR(10),
CONSTRAINT PK_ID PRIMARY KEY (id),
CONSTRAINT uk_id UNIQUE (id)
)
我也看到,它創建了一個PK約束,唯一約束分開。
我想知道分別創建這個獨特密鑰的優勢是什麼?
隨着主鍵一直創建一個唯一的約束是否是一個好習慣?如果答案是「否」,那麼在什麼情況下會是有利的。
我覺得它是一個非常基本的問題,但我想得到一些專家的想法和建議。
謝謝。
主鍵在定義上是唯一的。這是多餘的,我無法想象它只是額外的開銷。 – pmbAustin
所有主鍵都是唯一的,但並非所有唯一索引都是主鍵。 –