truncate有外键约束的表,报ORA-02266处理。

简介:

问题描述:当父表有子表的外键约束时,无法直接truncate父表。报ORA-02266: unique/primary keys in table referenced by enabled foreign keys。
这里使用另一种办法来解决这个问题:先把外键失效,truncate表之后再把外键生效。
SQL> truncate table machine_room;
truncate table machine_room
*
ERROR at line 1:
ORA-02266: unique/primary keys in table referenced by enabled foreign keys

1.查询外键约束

SQL> select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE,R_CONSTRAINT_NAME from ALL_CONSTRAINTS WHERE constraint_type='R' and owner='UML';

TABLE_NAME CONSTRAINT_NAME R_CONSTRAINT_NAME
------------------------------ ------------------------------ ------------------------------
TEAM FK_T_SCHOOL01 PK_T_SCHOOL
TEAM_MESSAGE FK_T_TEAM04 PK_T_TEAM
TEAM_MESSAGE FK_T_SCHOOL0 PK_T_SCHOOL
RACE_SEAT FK_T_MACHINE_ROOM02 PK_T_MACHINE
RACE_SEAT FK_T_TEAM02 PK_T_TEAM
RACE_MARK FK_T_TEAM03 PK_T_TEAM

6 rows selected.

2. 失效子表的外键约束 (所有外键)
SQL> ALTER TABLE race_seat DISABLE CONSTRAINT fk_t_machine_room02 ;

Table altered.

3. 再次执行truncate父表数据的操作
SQL> truncate table machine_room;

Table truncated.

4. 生效外键约束 (刚才所有失效外键)
SQL> ALTER TABLE race_seat enable CONSTRAINT fk_t_machine_room02;

Table altered.

ok,转载请标明出处。

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

本文转自 张冲andy 博客园博客,原文链接:  http://www.cnblogs.com/andy6/p/6219447.html  ,如需转载请自行联系原作者


相关文章
|
7月前
|
SQL 关系型数据库 MySQL
学习MySQL中DDL语句的修改字段与删除字段,删除表
学习MySQL中DDL语句的修改字段与删除字段,删除表
|
关系型数据库 索引
DB2查询主键、索引、表约束
DB2查询主键、索引、表约束
824 0
|
5月前
|
SQL Oracle 关系型数据库
ALTER TABLE 时的 SQL UNIQUE 约束
【7月更文挑战第16天】ALTER TABLE 时的 SQL UNIQUE 约束。
27 1
|
5月前
|
SQL Oracle 关系型数据库
ORA-01658创建表或索引报错分析
某项目最近在 SQL Loader 导数据时偶尔会报错,类似如下: SQL loader ORA-01658 unable to creale INITIAL extent for segment in tablespace ADS5GP2P_1 这个报错的意思是,没有足够的连续空间为表或索引创建 INITIAL extent
118 0
|
监控 关系型数据库 测试技术
你敢在Oracle 12c R2上做大表truncate吗?
笔者所处的省份正在做生产全网段的Oracle 12c升级,在正式割接前搭建了准生产环境用于应用测试,前期应用功能测试均正常,在进行二次模割对历史数据进行清理的时候,数据库发生了hang以及节点重启的问题。
2118 0
|
SQL Oracle 关系型数据库
[20180423]关于闪回表与主外键约束.txt
[20180423]关于闪回表与主外键约束.txt --//上个星期做的测试,可以发现删除表在恢复主外键约束丢失. --//链接:http://blog.itpub.
1105 0