1

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

最近,表 B 中添加了一个外键约束,引用表 A。因此,即使表 B 为空,也无法再截断表 A。是否有任何解决方法可以获得与截断表 A 相同的结果?

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

DBCC CHECKIDENT (TABLENAME, RESEED, 0)

PS。在任何人将此视为重复之前,这里的不同之处在于我不允许删除约束,也不允许创建任何约束。

4

3 回答 3

2

如果不能删除约束,就不能使用 TRUNCATE TABLE,所以必须使用 DELETE。

DELETE TABLEA
DBCC CHECKIDENT (TABLENAME, RESEED, 0)

注意:禁用 FK 也不起作用

于 2010-03-08T19:16:38.597 回答
-1

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

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.
于 2017-09-21T08:01:02.820 回答
-1

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

于 2017-09-21T08:17:34.753 回答