2017-05-05 61 views
0

SQL中的唯一列可以是auto_increment,... 即,如果我們有一個數據庫表,它具有帶有標識(1,1)的主鍵列「id」。那麼,我們可以使用UNIQUE約束和IDENTITY(1,1)的其他列嗎?SQL中的唯一列可以是auto_increment

+0

幾個問題,你爲什麼會需要相同的兩列數據,任何具體的理由 – Joby

+0

這似乎類似於[標識列的StackOverflow(HTTP://計算器。 com/questions/349092/can-a-sql-server-table-have-two-identity-columns) – Joby

+0

ok讓我們更改數據,IDENTITY(500,1)... :),但無論如何,下面的答案將闡明我們不能有兩列有「IDENTITY」 – mohd

回答

1

您每個表只能有一個標識列,但您可以擁有任意數量的唯一約束(或索引)。
實際上,如果您將int標識列用作主鍵,那麼強烈建議您在表上至少再添加一個唯一索引。
原因是,使用代理主鍵而不在自然鍵上強制實施唯一性意味着您的數據庫無法正確執行數據完整性。 (Bonus reading - Natural vs. Surrogate Keys in SQL Server : Getting the Proper Perspective

順便說一句,列是標識列的事實並不意味着它是唯一的。它只會是唯一的,只要沒有人混淆 - 身份列可以使用set identity_insert on插入顯式值,並且可以使用DBCC CHECKIDENT sql命令重新接種。

+0

謝謝..爲答案 – mohd

+0

[很高興幫助: - )](http://meta.stackoverflow.com/questions/291325/how-to-show-欣賞用戶在堆棧溢出/ 291327#291327) –

相關問題