Jer*_*emy 14 sql t-sql sql-server identity sql-server-2008
删除SQL Server 2008 Express中的行后是否可以重用标识字段值?这是一个例子.假设我有一个表,其中Id字段作为主键(标识).如果我添加五行,我将有这5个ID:1,2,3,4,5.如果我要删除这些行,然后再添加5行,新行将有Ids:6,7,8, 9,10.是否可以让它再次从1开始?
我是否必须从另一个表中删除数据才能完成此操作?谢谢你的帮助.
OMG*_*ies 21
您可以使用以下命令设置IDENTITY值:
DBCC CHECKIDENT (orders, RESEED, 999)
Run Code Online (Sandbox Code Playgroud)
这意味着你必须根据每个DELETE运行语句.这应该开始强调为什么这是一个坏主意......
数据库不关心顺序值 - 仅用于表示.
如果要在删除所有行后重置标识,请执行以下操作之一
--instead of delete, resets identity value
TRUNCATE TABLE orders
--or if TRUNCATE fails because of FKs, use this after DELETE
DBCC CHECKIDENT (orders, RESEED, 1)
Run Code Online (Sandbox Code Playgroud)
否则,内部价值无论是否差距都无关紧要.
identity默认情况下,字段不会重用旧值.您可以使用重新设置它们dbcc checkident,但不建议这样做,因为如果您重新设置在表格中仍然存在的值以下,您将获得密钥违规.一般来说,你不应该关心PK值是什么.他们不连续的事实并没有伤害任何事情.