ORA-02266: unique/primary keys in table referenced by enabled foreign keys

简介: 在数据库里面使用TRUNCATE命令截断一个表的数据时,遇到如下错误SQL >TRUNCATE TABLE p;ORA-02266: unique/primary keys in table referenced by enabled foreign keys有时候对应的中文错误提示为:ORA-02266: 表中的唯一/主键被启用的外部关键字引用,一般出现这个错误,是因为表中的主键被其它表的外键所引用,导致删除数据时出错。

在数据库里面使用TRUNCATE命令截断一个表的数据时,遇到如下错误

SQL >TRUNCATE TABLE p;

ORA-02266: unique/primary keys in table referenced by enabled foreign keys

有时候对应的中文错误提示为:ORA-02266: 表中的唯一/主键被启用的外部关键字引用,一般出现这个错误,是因为表中的主键被其它表的外键所引用,导致删除数据时出错。


此时,你可以通过下面脚本查看一下涉及该表主键的外键约束信息。

-查询主外键关系
SQL> col 主键表名 for a20
SQL> col 主键列名 for a20
SQL> col 外键表名 for a20
SQL> col 外键列名  for a20
SQL> select b.table_name  主键表名,
        b.column_name 主键列名,
        a.table_name  外键表名,
        a.column_name 外键列名
   from ( select a.constraint_name,
                b.table_name,
                b.column_name,
                a.r_constraint_name
           from dba_constraints a, dba_cons_columns b
          WHERE a.constraint_type = 'R'
            and a.constraint_name = b.constraint_name) a,
        ( select distinct a.r_constraint_name, b.table_name, b.column_name
           from dba_constraints a, dba_cons_columns b
          WHERE a.constraint_type = 'R'
            and a.r_constraint_name = b.constraint_name) b
  where a.r_constraint_name = b.r_constraint_name
and b.table_name= 'P' ;
 
--处理方法一
SQL> alter table p disable primary key cascade ;
 
Table altered.
 
SQL> truncate table p;
 
Table truncated.
 
SQL> alter table p enable primary key ;
 
Table altered.
 
--处理方法二
SQL> delete from t;
 
1 row deleted.
 
 
SQL> commit ;
 
Commit complete.

注意事项在ENABLE主键后不会自动恢复外键(没有cascade选项),因此需要手工对引用该键的约束进行ENABLE。

ALTER TABLE P ENABLE VALIDATE CONSTRAINT FK_P;

目录
相关文章
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL的逻辑存储结构
PostgreSQL的逻辑存储结构包括数据库集群、数据库、表空间、段、区、块等。每个对象都有唯一的对象标识符OID,并存储于相应的系统目录表中。集群由单个服务器实例管理,包含多个数据库、用户及对象。表空间是数据库的逻辑存储单元,用于组织逻辑相关的数据结构。段是分配给表、索引等逻辑结构的空间集合,区是段的基本组成单位,而块则是最小的逻辑存储单位。
300 2
【赵渝强老师】PostgreSQL的逻辑存储结构
|
存储 Oracle NoSQL
【赵渝强老师】Oracle的体系架构
Oracle数据库的核心在于其体系架构,主要包括数据库与实例、存储结构、进程结构和内存结构。数据库由物理文件组成,实例则是内存和进程的组合。存储结构分为逻辑和物理两部分,进程结构涉及多个后台进程如SMON、PMON、DBWn等,内存结构则包含SGA和PGA。掌握这些知识有助于更好地管理和优化Oracle数据库。
404 7
|
存储 NoSQL 网络协议
PG内核解读-第1节PostgreSQL系统概述
本文整理自阿里云数据库开源社区Maintainer于巍(花名漠雪),在PostgreSQL数据库内核解读系列的分享。本篇内容主要分为四个部分: 1. 本系列教程介绍 2. PostgreSQL概述(历史、架构) 3. PostgreSQL安装启动 4. PostgreSQL常用命令、调试
PG内核解读-第1节PostgreSQL系统概述
|
关系型数据库 数据库 PostgreSQL
postgresql | 数据库| 生成2000W条的简单测试表
postgresql | 数据库| 生成2000W条的简单测试表
432 0
|
关系型数据库 MySQL Java
MySQL中wait_timeout与interactive_timeout详解
MySQL中wait_timeout与interactive_timeout详解
2958 0
|
监控
监控ASM磁盘IO(iostat)
找到ASM磁盘对应的OS设备
462 0
西门子S7-200 SMART PID回路控制,如何调用向导生成的子程序编程
在编程软件STEP7-Micro/WIN SMART的指令树中,展开调用子例程文件夹,选择初始化PID向导子程序拖放到主程序中,该子程序有多个接口参数,切换到该子程序窗口,程序注释中指出需要在每个扫描周期使用SM0.0从主程序中调用该子程序,变量表给出有关接口参数的含义和取值范围。
西门子S7-200 SMART PID回路控制,如何调用向导生成的子程序编程
|
存储 SQL 人工智能
openGauss5.0企业版使用指南之系统架构
背景:今年3月openGauss 5.0发布,升级了资源池化内核能力和DataKit数据全生命周期管理工具,整体在性能、安全性与易用性方面均有大幅提升。本次大会上,共7家数据库伙伴、企业用户基于openGauss 5.0发布商业版和自用版,其中,openGauss嵌入式商业发行版首次发布。至此,openGauss覆盖场景从服务器、边缘扩展到嵌入式,场景更加丰富。 作为之前被 openGauss 3.1版本 踩坑的艰辛过程,又持续的跟进了解了一下Opengauss的近况,特地了分享一下。 1. 产品定位 我们先来看下产品定位,根据官网和发布会我们可以了解到OpenGauss5.0的基本产品定位
880 0
|
存储 内存技术
CPU设计(单周期和流水线)
CPU设计(单周期和流水线)
CPU设计(单周期和流水线)
|
文字识别 Oracle 关系型数据库