错误背景:
有两张表,一张是主表(tbl_invoice),一张是明细表(tbl_invoice_detail),
出于某种原因现在需要清空数据库,保留数据库结构,为了使自增长字段重新从1开始,我使用了truncate语法进行操作:
由于主表和明细表之间存在主外键关系,我先清空了明细表,然后清空主表的时候发生了上图中的错误。
补充一点:
(tbl_invoice表中的主键id和tbl_invoice_detail的字段invoice_id是主外键关系)
这时后应该怎么做呢?
查询外键(在主表中查询):
--在主表中查询主外键关系
exec sp_helpconstraint 'tbl_invoice'
执行结果:
删除外键(在明细表中删除外键):
--在明细表中删除外键
alter table tbl_invoice_detail drop constraint fk_tbl_invoice_detail_invoice_id
执行结果:
tbl_invoice_detail是明细表的表名
invoice_id是明细表中的外键
这时候就可以truncate主表了
truncate table tbl_invoice
执行结果:
可以看到主表已经truncate成功了。
把删除的外键再添加回去
--在明细表中把删除的主外键添加上
alter table tbl_invoice_detail
add constraint fk_tbl_invoice_detail_invoice_id foreign key (invoice_id) references tbl_invoice(id)