关于sql:截断外键引用的表

Truncating a table referenced by a foreign key

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

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

我已经尝试了下面的方法,但身份没有重置。

1
DBCC CHECKIDENT (TABLENAME, RESEED, 0)

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


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

1
2
DELETE TABLEA
DBCC CHECKIDENT (TABLENAME, RESEED, 0)

注意:禁用FK也不起作用


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


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

1
2
3
4
5
6
7
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.