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

以前在使用truncate命令时遇到表存在外键引用时无法执行命令的情况都是用delete来代替,今天又遇到这个问题,于是在网上搜了一把,可以通过如下方式解决:

1、基本思路:先关闭mysql的外键约束,再执行truncate命令,然后再还原mysql的外键约束

2、打开、关闭、查看mysql的外键约束命令

禁用外键约束
SET FOREIGN_KEY_CHECKS=0;

启动外键约束
SET FOREIGN_KEY_CHECKS=1;

查看当前FOREIGN_KEY_CHECKS的值可用如下命令
SELECT  @@FOREIGN_KEY_CHECKS;

原文地址:https://www.cnblogs.com/dingjiaoyang/p/9931171.html

时间: 2024-07-31 15:35:55

truncate table时存在外键约束的解决办法的相关文章

转:使用DBUnit测试时违反外键约束的解决办法

DBUnit是一个基于junit扩展的数据库测试框架.它提供了大量的类对与数据库相关的操作进行了抽象和封装.它会把数据库表里的数据和一个xml文件关联起来,也就是说它可以让数据在XML文件和数据库之间转换.基于这种设计模式DBUnit可以在测试之前,先备份数据库到一个临时XML文件中,然后删除数据库中的所有数据接着把我们写好的模拟数据存入数据库中,最后,在测试完毕后,删除现有数据再存入之前备份的数据,回溯到测试前的状态以达到各个单元测试互不影响的目的. 但是如果dbunit测试的数据表之间存在外

数据库使用truncate清理非常多表时碰到外键约束时怎么高速解决

问题处理思路: 1. 先将数据库中涉及到外键约束的表置为无效状态 2.待清除全然部表数据后再将外键约束的表置为可用状态 详细实现脚本: declare begin for vv_sql in (SELECT 'ALTER TABLE '|| table_name ||' DISABLE CONSTRAINT ' || CONSTRAINT_NAME alter_sql FROM USER_CONSTRAINTS where CONSTRAINT_TYPE = 'R') loop execute

使用truncate ,截断有外键约束的父表

此时有两种方法,解决1.删除外键约束,删除该表,在重建外键约束--查询外键约束select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE,R_CONSTRAINT_NAME from ALL_CONSTRAINTS WHERE constraint_type='R' and owner='SCOTT'; 删掉外键约束 alter table emp drop constraint fk_deptno; truncate  表后如果仍然想要关联原来的子表,重

Mysql 截断表时由于外键约束无法完成时的处理方法

而在MySQL?5.5中,存在外键约束的InnoDB表,在任何情况下都不允许进行Truncate操作,并报错(Error 1701),如果朋友你实在是有点强迫症,那么可以用下面的方式拐着弯解决: 导出数据库数据位.sql文件. 随便用个文本编辑器打开文件. 手动编辑一下.sql文件,怎样编辑相信你看了下面这个图就知道了 4.再将编辑好的.sql文件重新导入就OK了.

MySQL 如何删除有外键约束的表数据

-- 禁用外键约束 SET FOREIGN_KEY_CHECKS=0; -- 删除数据 truncate table stockTBL; -- 启动外键约束 SET FOREIGN_KEY_CHECKS=1; -- 查看当前FOREIGN_KEY_CHECKS的值,可用如下命令: SELECT @@FOREIGN_KEY_CHECKS;

MySQL truncate含有外键约束的条目报错

1.报错信息: Cannot truncate a table referenced in a foreign key constraint 2.出现错误操作: truncate table a1; 为什么使用truncate? 使用truncate可以清空表数据,而且可以使自增列重置. 3.解决方法 在MySQL中取消外键约束:set foreign_key_checks=0; 执行truncate table a1; 之后在设置外键约束:set foreign_key_checks=1; 原

Oracle存储过程update受外键约束的主键值时完整性冲突解决方案

1.问题背景 虽然在数据库操作中我们并不提倡修改主键,但是确实在实际生活中有这样的业务需求: 表A有主键KA,表B中声明了一个references A(KA)的外键约束,我们需要修改A中某条目KA的值并且更新B中外键约束. 但是DBMS在执行了第一条update后检查完整性会发现冲突:B中条目的外键不存在. 注:我在Oracle database环境下遇到这个问题的,Oracle很蛋疼的不能设置外键为update级连,所以只有人工处理. 2.举例说明 用一个简单的例子说明,数据库中有以下三个表:

MySQL的外键约束:Cascade/Restrict/No action/SET NULL

转自:http://blog.csdn.net/cnjsnt_s/article/details/5548280 具体使用时需要参考:http://blog.csdn.net/codeforme/article/details/5539454 (注:没看很明白,囧.) MySQL有两种常用的引擎类型:MyISAM和InnoDB.目前只有InnoDB引擎类型支持外键约束.InnoDB中外键约束定义的语法如下: [CONSTRAINT [symbol]] FOREIGN KEY [index_nam

sql完美删除外键约束,避免产生问题

解决无法删除表,提示被外键约束引用 有时想删除某个表时,提示“无法删除对象 'Orders',因为该对象正由一个 FOREIGN KEY 约束引用”,原因很简单不要急躁,它被其它表的外键引用了,所以无法删除,在此只需先找到哪些表的外键引用了该表的字段.通过系统函数就能解决(SQL Server系统函数提供了非常完善的功能,能代替我们查找和解决许多问题). select     fk.name,fk.object_id,OBJECT_NAME(fk.parent_object_id) as ref