使用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  表后如果仍然想要关联原来的子表,重新添加约束

alter table emp add constraint fk_deptno foreign key (deptno) references dept (deptno) on delete cascade;

2.使用禁止方式,使外键失效,truncate 表后重新使生效,不重建约束

ALTER TABLE emp DISABLE CONSTRAINT fk_deptno ;
truncate父表数据的操作
truncate table dept;

重新生效外键约束 
ALTER TABLE emp enable CONSTRAINT fk_deptno;

文章可以转载,必须以链接形式标明出处。

原文地址:https://www.cnblogs.com/dqliuq1215/p/9142609.html

时间: 2024-10-02 06:54:44

使用truncate ,截断有外键约束的父表的相关文章

外键约束

如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表.外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常的维护工作更加轻松.这里以MySQL为例,总结一下3种外键约束方式的区别和联系. 外键约束对子表的含义: 如果在父表中找不到候选键,则不允许在子表上进行insert/update 外键约束对父表的含义: 在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时,父表

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

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

理解外键约束

--自定义账户访问别的用户的表 select * from scott.emp; select * from scott.dept; --foreign key 外键约束 --创建班级表 create table t_class( cid number(6), cname varchar2(12) ) --方式三:添加班级约束 alter table t_class add constraints pk_class primary key(cid); alter table t_class mo

mysql外键约束总结

总结三种MySQL外键约束方式 如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表.外键是用来实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或者删除的级联操作将使得日常的维护工作更加轻松.这里以MySQL为例,总结一下3种外键约束方式的区别和联系. 这里以用户表和用户组表为例,这是一个典型的多对一关系,多个用户对应于一个用户组. 首先创建用户组表: 创建用户组表 create table t_group ( id int not n

MySQL学习9:详解MySQL中的外键约束

本篇主要讲解MySQL中的外键约束. 一约束概述 创建约束的目的就是保证数据的完整性和一致性.约束根据约束针对的字段的数目的多少划分为表级约束和列级 约束. 如果约束按照功能来划分的话刻印划分为:NOT NULL(非空约束).PRIMARY KEY(主键约束).UNIQUE KEY(唯一约束).DEFAULT(默认约束)和FOREIGN KEY(外键约束). 在前面我们已经初步涉及到了除外键约束之外的四个约束,这一次我们来谈谈最复杂的外键约束. 二外键约束的要求 FOREIGN KEY(外键约束

数据库使用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 table时存在外键约束的解决办法

以前在使用truncate命令时遇到表存在外键引用时无法执行命令的情况都是用delete来代替,今天又遇到这个问题,于是在网上搜了一把,可以通过如下方式解决: 1.基本思路:先关闭mysql的外键约束,再执行truncate命令,然后再还原mysql的外键约束 2.打开.关闭.查看mysql的外键约束命令 禁用外键约束SET FOREIGN_KEY_CHECKS=0; 启动外键约束SET FOREIGN_KEY_CHECKS=1; 查看当前FOREIGN_KEY_CHECKS的值可用如下命令SE

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; 原

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

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