无法截断表 ‘tbl_***‘,因为该表正由 FOREIGN KEY 约束引用。

2023-10-16 03:50

本文主要是介绍无法截断表 ‘tbl_***‘,因为该表正由 FOREIGN KEY 约束引用。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

错误背景:
有两张表,一张是主表(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)

在这里插入图片描述

后来又发现一种简单的方法:

无法截断表 ‘tbl_******** ‘,因为该表正由 FOREIGN KEY 约束引用点击进来看看吧

这篇关于无法截断表 ‘tbl_***‘,因为该表正由 FOREIGN KEY 约束引用。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/218844

相关文章

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

三国地理揭秘:为何北伐之路如此艰难,为何诸葛亮无法攻克陇右小城?

俗话说:天时不如地利,不是随便说说,诸葛亮六出祁山,连关中陇右的几座小城都攻不下来,行军山高路险,无法携带和建造攻城器械,是最难的,所以在汉中,无论从哪一方进攻,防守方都是一夫当关,万夫莫开;再加上千里运粮,根本不需要打,司马懿只需要坚守城池拼消耗就能不战而屈人之兵。 另一边,洛阳的虎牢关,一旦突破,洛阳就无险可守,这样的进军路线,才是顺势而为的用兵之道。 读历史的时候我们常常看到某一方势

poj 3159 (spfa差分约束最短路) poj 1201

poj 3159: 题意: 每次给出b比a多不多于c个糖果,求n最多比1多多少个糖果。 解析: 差分约束。 这个博客讲差分约束讲的比较好: http://www.cnblogs.com/void/archive/2011/08/26/2153928.html 套个spfa。 代码: #include <iostream>#include <cstdio>#i

poj 3169 spfa 差分约束

题意: 给n只牛,这些牛有些关系。 ml个关系:fr 与 to 牛间的距离要小于等于 cost。 md个关系:fr 与 to 牛间的距离要大于等于 cost。 隐含关系: d[ i ] <= d[ i + 1 ] 解析: 用以上关系建图,求1-n间最短路即可。 新学了一种建图的方法。。。。。。 代码: #include <iostream>#include

POJ 1364差分约束

给出n个变量,m个约束公式 Sa + Sa+1 + .... + Sa+b < ki or > ki ,叫你判断是否存在着解满足这m组约束公式。 Sa + Sa+1   +   .+ Sa+b =  Sum[a+b] - Sum[a-1]  . 注意加入源点n+1 。 public class Main {public static void main(Strin

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

使用Qt编程QtNetwork无法使用

使用 VS 构建 Qt 项目时 QtNetwork 无法使用的问题 - 摘叶飞镖 - 博客园 (cnblogs.com) 另外,强烈建议在使用QNetworkAccessManager之前看看这篇文章: Qt 之 QNetworkAccessManager踏坑记录-CSDN博客 C++ Qt开发:QNetworkAccessManager网络接口组件 阅读目录 1.1 通用API函数

DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed

DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed 文章目录 DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed问题解决办法 问题 使用 DBeaver 连接 MySQL 数据库的时候, 一直报错下面的错误 Public Key Retrieval is

JavaSE(十三)——函数式编程(Lambda表达式、方法引用、Stream流)

函数式编程 函数式编程 是 Java 8 引入的一个重要特性,它允许开发者以函数作为一等公民(first-class citizens)的方式编程,即函数可以作为参数传递给其他函数,也可以作为返回值。 这极大地提高了代码的可读性、可维护性和复用性。函数式编程的核心概念包括高阶函数、Lambda 表达式、函数式接口、流(Streams)和 Optional 类等。 函数式编程的核心是Lambda