truncate table 遇到的外键被使用问题解决方案。

解决MySQL表有外键存在时无法TRUNCATE 今天测试功能的时候添加了垃圾数据, 功能完善后想清空表中数据且重置标识数 TRUNCATE TABLE 表名 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。 执行TRUNCATE操作时 发现有外键foreign key关联,造成无法更新或删除数据 TRUNCATE TABLE admininfo; [SQL] TRUNCATE TABLE admini 阅读详情

在asp.net中操纵数据库,有时候要清空某张或者某些的表,但是这些表使用了外键,而且有的还用到了自增字段,希望清空之后能从1开始。百度谷歌之后小结一下,为以后理解和重复使用保留材料。


解决方案一:

1. 清空数据 
2. 有外键也可以, 因为是逆向删除, 从最后一张表删除. 且使用的是delete, 因为truncate不能对有外键的表 
3. 种子问题, 如果表存在种子重设为0, 如不存在就不操作 
4. 加了事务, 中间报错, 有后悔机会 
5. 截断日志功能, 因为使用delete, 删除后日志文件会增大, 可以不使用

 

 

以上代码只要在select rtrim(name) from sysobjects where type = 'U' order by crdate desc中添加过滤条件即可过滤一些表,我是改成,where type = 'U' and rtrim(name) in('IPControl','Student','Teacher_Course','Score','Paper','PaperDetail') order by crdate desc 这样使得in里面的表被清空,而数据库中其他表内容被保留下来。

 

==============================

在ASP.net中要直接使用这段代码会出问题,我猜想主要原因在于go这个词上。

 

解决方法就是将这一大片的代码分为若干个sql语句,然后顺次执行。另外,个人觉得也无需将所有的语句段都复制使用,选择自己需要的就可以了。

 

=============================

 

解决方案二:

 


 

 

 

 

都看不太懂,但是都挺有用的。以后如果有进步,再回头来好好理解。这当中也有一个对表进行过滤的地方,@command1= 'truncate table ?', @whereand=' and name not in(''Users'')'  我就设置了一个name not in(''Users'')'  ,结果运行之后只有Users表被保留下来,其他全部被清空。

 

MySQL中如何使用TRUNCATE语句删除具有外键关联的主表数据 当存在外键关联时,删除主表中的数据可能会违反外键约束,除非同时删除相关的从表数据。否则,MySQL将拒绝删除主表中的数据,以保护数据的完整性。在MySQL数据库中,如果存在外键关联的主表数据需要删除,使用TRUNCATE语句可能会遇到问题。TRUNCATE语句是一种快速删除表中所有数据的方法,但是它不会触发外键约束,这可能导致数据完整性的问题。在确保外键约束启用并删除从表数据后,我们可以使用TRUNCATE语句删除主表数据。通过遵循这些步骤,您可以正确地删除具有外键关联的主表数据,同时保持数据的完整性。 阅读详情

相关推荐

国产FPGA开发实战:紫光同创编程软件中的约束文件详解与常见问题

本文详细解析了紫光同创FPGA编程软件中约束文件的关键配置技巧与常见问题。通过基础架构解析、时钟约束实践、物理约束调控及典型问题排查指南,帮助开发者高效掌握国产FPGA开发中的约束文件应用,提升开发效率与设计稳定性。

gin88的博客 913

truncate table与外键约束

转自:http://run-freely.blog.163.com/blog/static/13207267820127692111738/ Truncate Table操作是我们对数据表进行数据清除的一种便捷方式。相对于DML操作的delete,truncate操作速度更快。但是,使用truncate操作本质是一种DDL操作,在使用truncate进行清表操作时要受到很多限制。本篇说明外...

weixin_30611509的博客 356

IsaacGym四足机器人sim to real全过程详细解析(walk these ways方法)

本文使用强化学习的方法运行到Aliengo机器人上完成从训练到部署的全过程。该方法使用的是GO1机器人提供了完整的sim to real代码和遥控器控制代码,所以我们只需要重新训练和部署健康就可以使用在Aliengo上。该方法使用lcm进行通讯首先程序通过UDP和机器人控制板进行通讯获取机器人状态并下达指令。然后又通过lcm进行机器人状态信息的发布和模型命令的获取。

weixin_44061195的博客 2万+

truncate table时因为外键原因报错

今天在清空系统中某些表时,部分表报错如下truncate table SUP_FOINUNFINV *第 1 行出现错误:ORA-02266: 表中的唯一/主键被启用的外键引用根据报错的原因...

ckae8456的博客 564

PTA编程—币值转换

我对于这个题的主要思想就是把九位数分三块,对每块进行处理后,再合并。有了这个思想就开始写代码,后面就是哪有洞补哪,哪个测试用例没通过就对其特殊处理…。反正最后测试用例全通过了。 #include<iostream> #include <string> #include <algorithm> using namespace std; char a[10]={'a','b','c','d','e','f','g','h','i','j'}; //既然题目说了最多9位

uyo9ko的博客 991

具身大小脑全栈全网独家复现|LLM链式推理+边缘VLA感知+毫秒级运动小脑、优化人形步态僵硬运动滞后、打通思考-行走-操作全链路适配居家工业多场景落地

高层决策大脑(异步10Hz,GPU算力):轻量化机器人微调LLM+RhinoVLA边缘视觉大模型,负责自然语言链式工序拆解、全局环境语义感知、目标物体筛选、跨机器人动作适配,输出粗粒度运动目标,不介入底层伺服计算;依托View Registry实现异构机器人动作对齐,适配多形态机器人切换;中层调度小脑(硬实时1kHz,CPU算力)

qq_36130719的博客 261

truncate table时存在外键约束的解决办法

以前在使用truncate命令时遇到表存在外键引用时无法执行命令的情况都是用delete来代

ding 4207

麒麟V10 SP1系统下编译linuxdeployqt并打包Qt 5.15.2程序完整指南

麒麟V10 SP1系统下编译linuxdeployqt并打包Qt 5.15.2程序完整指南

ChenJin_2的博客 276

Truncate Table与外键约束

Truncate Table操作是我们对数据表进行数据清除的一种便捷方式。相对于DML操作的delete,truncate操作速度更快。但是,使用truncate操作本质是一种DDL操作,在使用truncate进行清表操作...

ciqu9915的博客 461

Android 12.0 kenel中修改rom系统内部存储的大小

在12.0的系统rom产品开发定制中,在对一些产品开发中的配置需求方面,由于在产品后续订单中,有些产品是出口的,但是硬件方面已经定板,时间比较仓促,所以 就需要软件方面在rom内部存储的大小方面作假,修改rom真实的大小容量,所以就需要在kenel驱动部分来修改这部分的值最好了,接下来分析下计算rom容量的 相关代码,然后做出相关的修改,来实现功能

安卓兼职framework和app工程师的博客 1678

杰理AC696N系列芯片,烧录的时候烧录器连接上芯片之后电脑显示无法识别该设备,该怎么解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1715

truncate和delete删除有外键约束的表

知识点:TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。 DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。 TR

北京-星辰 5344

【30天从零玩转AI应用开发】第16篇:智能体Agent入门——ReAct框架原理+首个会思考、会动手的AI实战

摘要: 本文介绍了AI智能体(Agent)的核心概念及其与普通大模型(LLM)的区别。通过ReAct(Reason+Act)框架,智能体实现了自主思考、调用工具和分步执行的能力。文章详细讲解了LangChain Agent的四大组件,并推荐新手使用ZERO_SHOT_REACT_DESCRIPTION类型。最后提供了一个完整的智能体实战代码示例,该智能体具备数学计算和天气查询功能,能够自主选择工具完成任务,展示了AI从”被动回答“到”主动行动“的关键进化。

在上海谋生的软件喵记录喵生 626

MySQL DELETE 语句:数据表删除操作指南

本文详细介绍了MySQL中删除数据表的操作方法,重点讲解了DROP TABLE和TRUNCATE TABLE两种命令的语法、参数、执行流程及区别。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 9381

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

mysql delete from table_mysql delete from table 失败

SET @[emailprotected]@SQL_MODE, SQL_MODE=‘NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION‘;TRUNCATE TABLE nametruncate语句,是清空表中的内容,包括自增主键的信息。truncate表后,表的主键就会重新从1开始。check the manual that corresponds to you...

weixin_31897613的博客 1303

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Pg数据同步填坑:truncate

truncate 使用的是 truncate table .... cascade 方式进行清理,每次同步某个表前做 truncate 操作,当表有外键关联的时候,truncate 其中一张表其他表的数据会被同时清理,即便是已经禁用了外键还是会去清理关联表。同步程序同步单表正常。全 schema 同步,没有报错,但某几张表的记录数都是0。同步前手工 truncate 所有表,同步时禁用 truncate 操作。先 truncate 目标表,再通过 copy 导入数据。

游游的记事本 182

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

mysql truncate table if exists_MySQL truncate table语句

在本教程中,您将学习如何使用MySQL TRUNCATE TABLE语句删除表中的所有数据。MySQL TRUNCATE TABLE语句简介MySQL TRUNCATE TABLE语句允许您删除表中的所有数据。 因此,在功能方面,TRUNCATE TABLE语句就像没有的语句。 但是,在某些情况下,MySQL TRUNCATE TABLE语句比DELETE语句更有效。MySQL TRUNCATE ...

weixin_35697651的博客 3787

oracle truncate table语法,SQL Truncate Table

在本教程中,我们来学习如何使用SQL TRUNCATE TABLE语句高效,快速地删除表中的所有数据。1. SQL TRUNCATE TABLE语句简介要删除表中的所有数据,可使用不带WHERE子句的DELETE语句。 但是对于具有几百万行的大表,DELETE语句很慢且效率不高。要快速删除大表中的所有行,使用以下TRUNCATE TABLE语句:TRUNCATE TABLE table_name;...

weixin_34058060的博客 3471

SQLSERVER清空(Truncate)被外键引用的数据表

前言:我们知道SQLSERVER清空数据表有两种方式Delete和Truncate,当然两者的不同大家也都知道(不清楚的可以MSDN)。不过这个错误“Cannot truncate table because it is being referenced by a FOREIGN KEY” 相信大家也都遇到过,解决的已解决,未解决的且看下文。 如何解决 开始我以为只要将外键Disa...

aa781398079的博客 992

oracle truncate写法,Oracle Truncate Table

oracle函数 的 Oracle Truncate Table在本教程中,您将学习如何使用Oracle TRUNCATE TABLE语句更快更有效地从表中删除所有数据(也叫截断表)。Oracle TRUNCATE TABLE语句简介如果要从表中删除所有数据,可以使用不带WHERE子句的DELETE语句,如下所示:DELETE FROM table_name;对于有少量行记录的表,DELETE语句...

weixin_35786588的博客 3768

mysql使用truncate清空表有外键问题(mysql 禁用和启用外键)

mysql多个表之前存在外键关联时,清空数据报错,如下: TRUNCATE TABLE security_data > 1701 - Cannot truncate a table referenced in a foreign key constraint (`scb-dev`.`identify_result`, CONSTRAINT `identify_result_ibfk_2` ...

u010046887的专栏 2468

mysql truncate 外键_如何清空(Truncate)带外键(FK)的表?

使用 `TRUNCATE` 清空 TABLE 时报如下错误:> 无法截断表 'TABLE_NAME',因为该表正由 FOREIGN KEY 约束引用。## SQL Server 对策### 案11. 删除数据;2. 重置自增的种子序列(如果有自增字段的话);```sqlDELETE FROM [TABLE_NAME]DBCC CHECKIDENT ('TABLE_NAME', RESEED,...

weixin_30082211的博客 1422

Oracle删除表数据TRUNCATE TABLE 命令

本文导读:删除表中的数据的方法有delete,truncate, 其中TRUNCATE TABLE用于删除表中的所有行,而不记录单个行删除操作。TRUNCATE TABLE 与没有 WHERE 子句的 DELETE 语句类似;但是,TRUNCATE TABLE 速度更快,使用的系统资源和事务日志资源更少。下面介绍SQL中Truncate的用法 当你不再需要该表时, 用 drop;当你仍要保留该表,但要删除所有记录时, 用 truncate;当你要删除部分记录时(always with a WHERE

y2020520的博客 1万+

mysql truncate语句_MySQL truncate table语句

在本教程中,您将学习如何使用MySQL TRUNCATE TABLE语句删除表中的所有数据。MySQL TRUNCATE TABLE语句简介MySQL TRUNCATE TABLE语句允许您删除表中的所有数据。 因此,在功能方面,TRUNCATE TABLE语句就像没有WHERE子句的DELETE语句。 但是,在某些情况下,MySQL TRUNCATE TABLE语句比DELETE语句更有效。My...

weixin_35148271的博客 1万+

【SQL SERVER】sqlserver 该表字段如果被用作其他表的外键不能被truncate table

之前查解决方案,说可以将外键禁用,在启用,实际操作的时候发现这种方式不能达到效果,禁用后执行truncate table,还是会提示不能执行,因为被外键引用,最后选用了删除外键,执行truncate table,增加外键的方法。执行delete语句,然后重置自增种子,能达到同样的效果,不过数据量过大的时候,执行会比较慢,效率不高,语句如下。执行删除子表外键,然后truncate table,最后再将外键加回来,语句如下。gs_cont表的主键被用作其他表的外键,这个表执行下列语句会报错。

寒冰的暖 617

truncate table与delete区别

truncate table需要drop table权限,它是完全清空一张表。 从逻辑上看,truncate table同delete 一样,或是drop table +create table一样。使用truncate table删除全表数据,要比delete要快。使用truncate table清空数据,不能进行回滚,且不受表间外键约束限制。 truncate是DDL语句,而且delete

XX@DBA 1万+
上一篇: C# 将txt文件内容导入到winform系统中,将tab制表符忽略并将数据处理成自己想要的标准样式。
下一篇: 在Vb.Net中弹出对话框的简单方法。使用Messagebox
HelloNull2010
博客等级 码龄16年 2粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值