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
如果要截断外键约束中引用的表
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. |