MySQL数据库有外键约束时使用truncate命令的办法
MySQL数据库操作中,Delete与Truncate两个命令都可以删除一个数据表中的全部数据,使用办法分别是:
DELETE FROM t_question
TRUNCATE TABLE t_question
但两种命令对数据表操作后,当添加数据时,实际效果还是不同的。Delete命令只是删除里面的记录,当插入新记录时,自增主键仍然在已经删除的记录基础上进行自增,即不会回到从1开始的情况;而Truncate命令则是重构了数据表,所以,使用Truncate命令后的数据表,当插入新记录时,自增主键从1开始,和一个新建的表一样。
实用中,如果是开发一个MySQL应用,开始可能使用的是测试数据,当应用开发成功后,需要将真正的数据导入到数据表中,为了使自增主键从1开始,使用Truncate操作数据表是必须的,因此,使用Truncate不可避免。
在MySQL数据库中,如果一个数据表有外键约束(foreign key constraint),那么是无法使用Truncate命令的,总是出现错误如下:
[Err] 1701 - Cannot truncate a table referenced in a foreign key constraint(....................)
解决办法有如下几种:
第一种办法:将对该表进行外键约束的相关表外键约束全部删除,等将表Truncate成功后,再恢复其它表对该表的外键约束,这种办法比较麻烦,不建议使用;
第二种办法:将对该表进行外键约束的相关表转存(dump),比如使用工具Navicat中的“Dump SQL File”,如果有数据,连数据带结构一并转存,如果无数据,只转存结构;这一步完成后,将外键约束的相关表删除。将主表Truncate成功后,再把外键约束的相关表恢复回来即可。这种办法不需要手动删除外键,虽然把整个表删除了,但表的结构及数据都完好地保存在SQL文件中,可以简单地恢复。
MySQL数据库有外键约束时使用truncate命令的办法的更多相关文章
- mysql数据库导入外键约束问题
在网站搬迁过程中,很重要一点是数据的迁移.你的数据库可能已经包含了一个设计良好的数据表集合,并且在网站运营过程中,产生了重要的数据.这时你必须做好包含数据表schema以及数据本身的迁移. 完成上述数 ...
- mysql 设置外键约束时如何删除数据
Mysql中如果表和表之间建立的外键约束,则无法删除表及修改表结构 解决方法是在Mysql中取消外键约束: SET FOREIGN_KEY_CHECKS=0; 然后将原来表的数据导出到sql语句,重新 ...
- MySQL数据库建立外键失败的原因总结
在MySQL数据库创建外键时,经常会发生一些错误,这是一件很令人头疼的事.一个典型的错误就是:Can’t create table... 的错误.在很多实例中,这种错误的发生都是因为mysql一直以来 ...
- SET FOREIGN_KEY_CHECKS=0;在Mysql中取消外键约束。
SET FOREIGN_KEY_CHECKS=0;在Mysql中取消外键约束.
- SET FOREIGN_KEY_CHECKS=0;在Mysql中取消外键约束
Mysql中如果表和表之间建立的外键约束,则无法删除表及修改表结构. 解决方法是在Mysql中取消外键约束: SET FOREIGN_KEY_CHECKS=0; 然后将原来表的数据导 ...
- 数据库使用truncate清理非常多表时碰到外键约束时怎么高速解决
问题处理思路: 1. 先将数据库中涉及到外键约束的表置为无效状态 2.待清除全然部表数据后再将外键约束的表置为可用状态 详细实现脚本: declare begin for vv_sql in (SEL ...
- 数据库 SQL 外键约束 多表查询
多表设计与多表查询 1.外键约束 表是用来保存现实生活中的数据的,而现实生活中数据和数据之间往往具有一定的关系,我们在使用表来存储数据时,可以明确的声明表和表之前的依赖关系,命令数据库来 ...
- MySQL数据类型--与MySQL零距离接触 3-2 外键约束的要求解析
列级约束:只针对某一个字段 表级约束:约束针对2个或2个以上的字段 约束类型是按功能来划分. 外键约束:保持数据一致性,完整性.实现数据表的一对一或一对多的关系.这就是把MySQL称为关系型数据库的根 ...
- 如何在MySQL中设置外键约束
引用:http://blog.sina.com.cn/s/blog_53729e4601011wja.html MySql外键设置详解 (1) 外键的使用: 外键的作用,主要有两个: 一个是 ...
随机推荐
- STL学习笔记
简介 STL(Standard Template Library),即标准模版库,涵盖了常用的数据结构和算法,并具有跨平台的特点.STL是C++标准函数库的一部分,如下图所示: STL含有容器.算法和 ...
- PC和HOST之间文件传送
从PC到HOST 文件传送表(*.srl) C:\123.txt text ~'LIANG.TEST.LIB.123' 批处理文件(*.bat) SEND "PC文件全路径" 'H ...
- android Handler机制详解
简单运行图: 名词解析: Message(消息):定义了一个包含描述以及随意的数据对象可以被发送到Hanlder的消息,获得消息的最好方法是Message.obtain或者Handler.o ...
- [linux] 结构化命令-for
1 for命令 # for:迭代循环:默认空格为分隔符 for var in list do commands done 1.1 读取列表中的值 #!usr/bin/bash for test in ...
- VS2012智能提示消失的解决方法
1.点击电脑左下角的“开始菜单”->"所有程序"->Microsoft Visual Studio 2012->Visual Studio Tools->V ...
- VC++修改电脑系统时间
我们可以通过代码,对系统时间进行获取和修改. 我将介绍两种方法.第一种,通过SYSTEMTIME 代码实现: #include <windows.h> #include <iostr ...
- Sql Server 常用操作
--DDL触发器CREATE TRIGGER [TR_create_drop_alter_Table] ON DATABASE FOR CREATE_TABLE,DROP_table,ALTER_ ...
- 解压版MySQL5.7.1x的安装与配置
解压版MySQL5.7.1x的安装与配置 MySQL安装文件分为两种,一种是msi格式的,一种是zip格式的.如果是msi格式的可以直接点击安装,按照它给出的安装提示进行安装(相信大家的英文可以看懂英 ...
- vpn速度太慢?先从本地网络着手
使用VPN,用户们抱怨的最多的是速度太慢这个问题,导致网页打不开或者打开缓慢,游戏延迟变高或者根本无法游戏,甚至无法连接等.那么我们今天就来全面解析下VPN的速度是由什么因素引起的. vpn速度过慢 ...
- 开启Python之路
开始自学Python 环境配置 自己百度去!!! 计算与变量 字符创.列表.元组和字典 简单的画图 使用if和else条件控制语句 循环 使用函数和模块来重用代码 使用类和对象 Python内建函数的 ...