Vik*_*ore 2 sql-server-2008 sql-server-2008-r2
嗨我正在使用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.
Run Code Online (Sandbox Code Playgroud)
我的问题我不能在表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 ...;
Run Code Online (Sandbox Code Playgroud)
否则@Damien说你的"真正问题"的解决方案是使用DELETE而不是TRUNCATE.如果您还使用TRUNCATE重置IDENTITY列,则可以执行a DELETE然后执行DBCC CHECKIDENT('dbo.TableA', RESEED, 1);...
| 归档时间: |
|
| 查看次数: |
18367 次 |
| 最近记录: |