截断外键引用的表

时间:2010-03-08 19:12:58

标签: sql sql-server-2005 truncate

我们在SQL Server 2005数据库A和B中有两个表。有一个服务每天截断表A.

最近,一个外键约束被添加到表B,引用表A.结果,即使表B为空,也不可能截断表A.是否有任何解决方法可以获得与截断表A相同的结果?

我已经尝试过以下方法,但身份未被重置。

DBCC CHECKIDENT (TABLENAME, RESEED, 0)

PS。在任何人指出这是重复之前,这里不同的是我不允许放弃约束,也不允许创建任何约束。

3 个答案:

答案 0 :(得分:1)

如果无法删除约束,则不能使用TRUNCATE TABLE,因此必须使用DELETE。

DELETE TABLEA
DBCC CHECKIDENT (TABLENAME, RESEED, 0)

注意:禁用FK无效

答案 1 :(得分:0)

如果要截断外键约束中引用的表

1-DISABLE related FK
2-TRUNCATE all related tables.
3-ENABLE the previously disabled FKs

SET FOREIGN_KEY_CHECKS = 0; -- Disable foreign key checking.
TRUNCATE TABLE Table1;
SET FOREIGN_KEY_CHECKS = 1; -- Enable foreign key checking.

答案 2 :(得分:0)

SET FOREIGN_KEY_CHECKS = 0; #MySQL返回空结果集(即零行)。 - 禁用外键检查。 TRUNCATE TABLE table_name; #MySQL返回空结果集(即零行)。 SET FOREIGN_KEY_CHECKS = 1; #MySQL返回空结果集(即零行)。 - 启用外键检查。#MySQL返回空结果集(即零行)。