gpt4 book ai didi

sql-server-2008 - 如果我们对另一个表中的列有外键约束,如何截断主键表?

转载 作者:行者123 更新时间:2023-12-01 12:36:25 25 4
gpt4 key购买 nike

您好,我正在使用 sql server 2008 r2,我有一个真正的问题。我有一张表 A 和一张表 B,我在表 A 中有一个 IID 列作为主键约束。和同一列,即表 B 中的 IID 作为外键约束。我有一种情况想截断表 A。在运行查询截断表 A 时它给了我以下错误。

Msg 4712, Level 16, State 1, Line 1 
Cannot truncate table 'A' because it is being referenced by
a FOREIGN KEY constraint.

我的问题是我无法对表 B 执行任何 DML 和 DDL 操作。我怎样才能截断表 A ?谢谢!进阶。

最佳答案

允许截断的唯一方法是删除表 A 的外键约束。如果约束被禁用或两个表都为空,SQL Server 仍然不允许它。所以如果你有外键的定义,你可以这样做:

ALTER TABLE dbo.TableB DROP CONSTRAINT FK_whatever;

TRUNCATE TABLE dbo.TableA;

ALTER TABLE dbo.TableB ADD CONSTRAINT FK_Whatever
FOREIGN KEY ...;

否则正如@Damien 所说,解决“真正问题”的方法是使用DELETE 而不是TRUNCATE。如果您还使用 TRUNCATE 重置 IDENTITY 列,则可以执行 DELETE 然后执行 DBCC CHECKIDENT('dbo.TableA', RESEED, 1); ...

关于sql-server-2008 - 如果我们对另一个表中的列有外键约束,如何截断主键表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11206690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com