2017-05-05 64 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) –

相关问题