保证不重用IDENTITY密钥

时间:2014-03-14 01:45:14

标签: sql-server tsql key identity uniqueidentifier

我的表格项目如下:

CREATE TABLE Item
(
ItemID      INT PRIMARY KEY IDENTITY NOT NULL,
OtherData   INT NOT NULL,
)

我需要确保一旦生成 ItemID ,即使从此表中删除了行,也永远不会再生成相同的 ItemID

IDENTITY会保证这个属性吗?如果没有,我怎样才能以最简单的方式保证这一点?

SQL Server 2008 R2

编辑:根据评论,如果* IDENTITY_INSERT *关闭并且没有发生再播种,我可以保证不会重复使用身份。有没有办法在桌面上禁止* IDENTITY_INSERT ON *?并防止再播种?

2 个答案:

答案 0 :(得分:2)

在键列上使用UNIQUE约束 - 而不是删除行,添加"删除"布尔列(即记录删除记录的列)。为了确保不重用某个值,您必须记录它...

答案 1 :(得分:0)

回复:IDENTITY_INSERT

  

用户必须拥有该表或对该表具有ALTER权限。

如果您的用户拥有这么大的权力,那么您无能为力。如果他们不(我期望)你不需要"不允许"它

同样,只有某些用户才能重新播种一个表(或截断它,另一个会重新开始编号的事情),如果他们可以执行这些操作,几乎可以绕过任何东西否则你可能会尝试做。

您的普通用户将无法重复使用身份值。所以,你的担忧通常是没有根据的。只需使用IDENTITY属性。