不能截断具有 pk/fk 关系的表?

kac*_*apy 0 sql-server-2005

我有一个名为 Folder 的表,其中包含 3 个字段:Id (PK)、Name、UserId (FK)

另一个名为 User 的表有两个字段:Id (PK), UserName

我正在尝试运行此 sql:

truncate table Folder
truncate table User
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

Cannot truncate table 'Folder' because it is being referenced by a FOREIGN KEY constraint.
Cannot truncate table 'user'   because it is being referenced by a FOREIGN KEY constraint.
Run Code Online (Sandbox Code Playgroud)

...即使在删除两个表中的所有记录后,我也得到了这个。为什么我不允许截断我的表格?

如果现在有办法在 pk/fk 关系表上运行截断,我如何在不使用截断的情况下轻松重置 PK 的种子?

编辑:添加了数据库图 在此处输入图片说明

gbn*_*gbn 7

要重新播种,请使用DBCC CHECKIDENT

DBCC CHECKIDENT ('table', RESEED, 1)
Run Code Online (Sandbox Code Playgroud)

或者您必须删除 FK,截断,然后重新创建 FK。

这是设计使然:TRUNCATE TABLE 是简单的页面释放,并且不会逐行检查约束。这个限制意味着你不能在有 FK 时截断......即使你禁用了 FK。

  • 我只是告诉你为什么:表上有外键。http://msdn.microsoft.com/en-us/library/ms177570.aspx (2认同)