【发布时间】:2015-05-01 20:28:07
【问题描述】:
我有一组表,我要清除它们并将新数据上传到其中。其中之一,Person 有指向它的外键,即使其他表为空,我也无法使用 TRUNCATE Table。
我在关闭外键检查后使用了 DELETE FROM 来解决这个问题。这有效,除非当我插入新值时,它们从旧值开始上升,我需要将它们重置为再次从 1 开始(或至少一些一致的可预测值)
DBCC CHECKIDENT ([Person], RESEED, -1);或 DBCC CHECKIDENT ([Person], RESEED, 0);我在其他地方看到了重置身份的建议,但没有给我任何有用的结果,而是产生了:
Checking identity information: current identity value 'NULL'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
如何截断以使用指向我的表的外键或使用 delete 清除表以重置主键的自动增量并从 1 开始?
【问题讨论】:
-
您是否在运行
DBCC命令后尝试插入记录?NULL的标识值表明种子已正确重置。 -
你的意思是在同一个连接中?因为我在此之后通过运行我正在测试的代码插入了记录,并从 PersonId 最初的位置开始得到结果。如果它只在相同的连接中起作用,就可以解释我遇到的麻烦。
-
我尝试在同一个连接上执行删除和插入操作,它成功了,然后我回到重新播种并在单独的连接上插入,这也有效,但我无法将其恢复到损坏的状态状态以验证实际修复它的原因。我想服务器进入了一些奇怪的内部状态,因为我之前尝试的完全没有工作现在工作正常。
标签: sql-server foreign-key-relationship identity truncate