我们在SQL Server 2005数据库A和B中有两个表。有一个服务每天截断表A.
最近,一个外键约束被添加到表B,引用表A.结果,即使表B为空,也不可能截断表A.是否有任何解决方法可以获得与截断表A相同的结果?
我已经尝试过以下方法,但身份未被重置。
DBCC CHECKIDENT (TABLENAME, RESEED, 0)
PS。在任何人指出这是重复之前,这里不同的是我不允许放弃约束,也不允许创建任何约束。
答案 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返回空结果集(即零行)。