我的表格项目如下:
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 *?并防止再播种?
答案 0 :(得分:2)
在键列上使用UNIQUE约束 - 而不是删除行,添加"删除"布尔列(即记录删除记录的列)。为了确保不重用某个值,您必须记录它...
答案 1 :(得分:0)
回复:IDENTITY_INSERT
:
用户必须拥有该表或对该表具有ALTER权限。
如果您的用户拥有这么大的权力,那么您无能为力。如果他们不(我期望)你不需要"不允许"它
同样,只有某些用户才能重新播种一个表(或截断它,另一个会重新开始编号的事情),如果他们可以执行这些操作,几乎可以绕过任何东西否则你可能会尝试做。
您的普通用户将无法重复使用身份值。所以,你的担忧通常是没有根据的。只需使用IDENTITY
属性。