我们在 SQL Server 2005 数据库中有两个表,A 和 B。有一个服务每天截断表 A。
最近,表 B 中添加了一个外键约束,引用表 A。因此,即使表 B 为空,也无法再截断表 A。是否有任何解决方法可以获得与截断表 A 相同的结果?
我已经尝试过下面的方法,但身份没有被重置。
DBCC CHECKIDENT (TABLENAME, RESEED, 0)
PS。在任何人将此视为重复之前,这里的不同之处在于我不允许删除约束,也不允许创建任何约束。
我们在 SQL Server 2005 数据库中有两个表,A 和 B。有一个服务每天截断表 A。
最近,表 B 中添加了一个外键约束,引用表 A。因此,即使表 B 为空,也无法再截断表 A。是否有任何解决方法可以获得与截断表 A 相同的结果?
我已经尝试过下面的方法,但身份没有被重置。
DBCC CHECKIDENT (TABLENAME, RESEED, 0)
PS。在任何人将此视为重复之前,这里的不同之处在于我不允许删除约束,也不允许创建任何约束。
如果不能删除约束,就不能使用 TRUNCATE TABLE,所以必须使用 DELETE。
DELETE TABLEA
DBCC CHECKIDENT (TABLENAME, RESEED, 0)
注意:禁用 FK 也不起作用
如果要截断外键约束中引用的表
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.
SET FOREIGN_KEY_CHECKS = 0;# MySQL 返回一个空结果集(即零行)。-- 禁用外键检查。TRUNCATE TABLE table_name
;# MySQL 返回一个空结果集(即零行)。SET FOREIGN_KEY_CHECKS = 1;# MySQL 返回一个空结果集(即零行)。-- 启用外键检查。# MySQL 返回一个空结果集(即零行)。