gpt4 book ai didi

sql - DBCC CHECKIDENT 将标识设置为 0

转载 作者:行者123 更新时间:2023-12-01 17:25:05 26 4
gpt4 key购买 nike

我使用此代码来重置表上的身份:

DBCC CHECKIDENT('TableName', RESEED, 0)

这在大多数情况下工作正常,第一次插入时我将 1 插入到 Id 列中。但是,如果我删除数据库并重新创建它(使用我编写的脚本),然后调用 DBCC CHECKIDENT,则插入的第一个项目的 ID 将为 0。

有什么想法吗?

编辑:经过研究,我发现我没有阅读 documentation正确 - “当前标识值设置为 new_reseed_value。如果自创建以来没有向表插入任何行,则执行 DBCC CHECKIDENT 后插入的第一行将使用 new_reseed_value 作为标识。否则,插入的下一行将使用new_reseed_value + 1。”

最佳答案

您在编辑问题时所写的内容是正确的。

运行DBCC CHECKIDENT('TableName', RESEED, 0)后:
- 新创建的表将以标识 0 开头
- 现有表将继续使用标识 1

解决方案在下面的脚本中,它有点像穷人截断:)

-- Remove all records from the Table
DELETE FROM TableName

-- Use sys.identity_columns to see if there was a last known identity value
-- for the Table. If there was one, the Table is not new and needs a reset
IF EXISTS (SELECT * FROM sys.identity_columns WHERE OBJECT_NAME(OBJECT_ID) = 'TableName' AND last_value IS NOT NULL)
DBCC CHECKIDENT (TableName, RESEED, 0);

关于sql - DBCC CHECKIDENT 将标识设置为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/472578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com