【SQL SERVER】sqlserver 该表字段如果被用作其他表的外键不能被truncate table
gs_cont表的主键被用作其他表的外键,这个表执行下列语句会报错
truncate table gs_cont
此时的解决方案有两种
-
执行delete语句,然后重置自增种子,能达到同样的效果,不过数据量过大的时候,执行会比较慢,效率不高,语句如下
-
执行删除子表外键,然后truncate table,最后再将外键加回来,语句如下
--先查询外键名字
select * from sys.foreign_keys where parent_object_id=OBJECT_ID('GS_CONT_A');
--删除对应外键
ALTER TABLE GS_CONT_A DROP CONSTRAINT FK_GS_CONT_GS_CONT_ID;
--执行truncate table
TRUNCATE TABLE GS_CONT;
--增加对应外键
ALTER TABLE GS_CONT_A ADD CONSTRAINT FK_GS_CONT_GS_CONT_ID FOREIGN KEY (GS_CONT_ID) REFERENCES GS_CONT(GS_CONT_ID);
之前查解决方案,说可以将外键禁用,在启用,实际操作的时候发现这种方式不能达到效果,禁用后执行truncate table,还是会提示不能执行,因为被外键引用,最后选用了删除外键,执行truncate table,增加外键的方法