注:本文来源于《oracle查询某张表的外键(最终解决办法)

一:几个查询表外键的脚本

select b.table_name, b.column_name from user_constraints a
inner join user_cons_columns b on a.constraint_name = b.constraint_name
where a.r_constraint_name in
(
select e.constraint_name from user_constraints e where e.table_name = 'GK_ZWVCH'
)

Oracle 查看一个表对应的主键和外键的约束关系,查看的语句:

 select a.owner, --主键拥有者  

        a.table_name, --主键表  

        b.column_name, --主键列  

        c.OWNER, --外键拥有者  

        c.table_name, --外键表  

        d.column_name --外键列  

 from user_constraints  a

 left join user_cons_columns b

             on  a.constraint_name=b.constraint_name

 left join user_constraints c

             on c.R_CONSTRAINT_NAME=a.constraint_name

 left join user_cons_columns d

             on c.constraint_name=d.constraint_name

 where  a.constraint_type='P'

     and  a.table_name='GK_ZWVCH' --需要查看主外键关系的表  

 order by a.table_name

二:truncate  有外键关系的表数据

问题原因

虽然truncate table在删除数据的速度上会占有一定的优势,但并不是在所有的情况我们都可以使用truncate,存在以下情况就使用truncate就会失败。

1,要删除数据的表包含foreign key约束(被其他表引用),而delete则可以通过级联删除来删除相关联的数据。

2,被索引视图引用过的表,也不能使用truncate。

解决方案

有外键的表只能用delete,不能用truncate,这是语法规定,要么就取消外键再truncate。

可以先禁用外键约束,删除完毕后,再启动外键约束。

查找外键关联

SELECT T1.TABLE_NAME,
T2.TABLE_NAME AS "TABLE_NAME(R)",
T1.CONSTRAINT_NAME,
T1.R_CONSTRAINT_NAME AS "CONSTRAINT_NAME(R)",
A1.COLUMN_NAME,
A2.COLUMN_NAME AS "COLUMN_NAME(R)"
FROM USER_CONSTRAINTS T1
INNER JOIN USER_CONSTRAINTS T2 ON T1.R_CONSTRAINT_NAME =
T2.CONSTRAINT_NAME
INNER JOIN USER_CONS_COLUMNS A1 ON T1.CONSTRAINT_NAME =
A1.CONSTRAINT_NAME
INNER JOIN USER_CONS_COLUMNS A2 ON T1.R_CONSTRAINT_NAME =
A2.CONSTRAINT_NAME
WHERE T2.TABLE_NAME = '要删的表名';

外键禁用/开启

--禁用约束:
alter table XXX disable constraint XXX;
--启用约束
alter table XXX enable constraint XXX;

具体实例操作:

oracle查询某张表的外键,并用 truncate 命令有外键的表中的数据的更多相关文章

  1. 在页面上绘制一张表格,使用 DOM 节点的动态添加和删除向表格中插入数据,点击表格每行后的“删除”超链接

    查看本章节 查看作业目录 需求说明: 在页面上绘制一张表格,使用 DOM 节点的动态添加和删除向表格中插入数据,点击表格每行后的"删除"超链接,使用 DOM 节点的删除操作将对应的 ...

  2. 使用truncate命令清空当前用户所有表的所有数据

    --批量清空当前用户所有表的所有数据 declarev_sql varchar2(2000) ;CURSOR cur is select table_name from user_tables ord ...

  3. MySQL数据库有外键约束时使用truncate命令的办法

    MySQL数据库操作中,Delete与Truncate两个命令都可以删除一个数据表中的全部数据,使用办法分别是: DELETE FROM t_question TRUNCATE TABLE t_que ...

  4. HBase表的基本结构和常用命令行操作

    一.HBase表的基本结构 1.概述: 平时常见的MySQL.Oracle数据库都是传统型关系数据库,它们都是按行查询.按行存储:而HBase为非关系型数据库,它是按列存储的的. 在HBase插入数据 ...

  5. 详解大数据采集引擎之Sqoop&采集oracle数据库中的数据

    一.Sqoop的简介: Sqoop是一个数据采集引擎/数据交换引擎,采集关系型数据库(RDBMS)中的数据,主要用于在RDBMS与HDFS/Hive/HBase之间进行数据传递,可以通过sqoop i ...

  6. Mysql命令alter add:增加表的字段

    alter add命令用来增加表的字段. alter add命令格式:alter table 表名 add字段 类型 其他; 例如,在表MyClass中添加了一个字段passtest,类型为int(4 ...

  7. (笔记)Mysql命令alter add:增加表的字段

    alter add命令用来增加表的字段. alter add命令格式:alter table 表名 add字段 类型 其他; 例如,在表MyClass中添加了一个字段passtest,类型为int(4 ...

  8. oracle查询所有用户表的表名、主键名称、索引、外键等

    1.查找表的所有索引(包括索引名,类型,构成列): select t.*,i.index_type from user_ind_columns t,user_indexes i where t.ind ...

  9. oracle中查询某张表都被哪些表参照了

    起因: 系统测试的时候发现如果某条记录已经被引用了,这个时候删除这条记录会引起数据不一致,系统会报错.比如警员信息,在考勤记录表里会引用警员ID,如果考勤记录表中已经存在这个警员ID了,这时从警员表中 ...

随机推荐

  1. 【CSS】利用宽高比例的媒体查询

    aspec-ratio 取值:value (x/y) 接收min/max前缀:是 aspect-ratio描述了输出设备目标显示区域的宽高比.该值包含两个以/分隔的正整数.代表了水平像素数(第一个值) ...

  2. Vue.js 2.x笔记:表单绑定(3)

    1. 基础用法 v-model 指令:在表单 input 和 textarea 元素上创建双向数据绑定. 1.1 单行文本(Text) <div id="app"> & ...

  3. Java中的Null是什么?

    对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常(NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我认 ...

  4. 【dp】导弹拦截

    题目链接 https://www.luogu.org/problemnew/show/P1020 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的 ...

  5. P3414 SAC#1 - 组合数 题解

    https://www.luogu.org/problemnew/show/P3414(题目传送) 这道题提醒大家一定要认真审题.看清楚后发现n的数据范围稍微小于long long类型的范围(看不清被 ...

  6. matolop画图

    import numpy as np import matplotlib.pyplot as plt x=np.linspace(0,6,100) y=np.cos(2*np.pi*x)*np.exp ...

  7. 开放源代码的设计层面框架Spring——day04

    spring第四天     一.Spirng中的JdbcTemplate         1.1JbdcTemplate概述             他是spring框架中提供的一个对象,是对原始Jd ...

  8. torchvision 作用

    1. 提供主流的model,和常用数据集 2. 对 torch.utils.data.Dataset进行扩充,针对不同类别图像放入不同文件夹的数据进行读取, torchvision.datasets. ...

  9. CentOS 6.6 系统升级到 CentOS 6.7

    1.利用Centos6.7 ISO镜像挂载为本地镜像 创建一个挂载目录 CentOS 6.6 系统升级到 CentOS 6.7 mkdir /mnt/data 2.挂载镜像(远程镜像) mount - ...

  10. Mountaineers Gym - 102021M (LCA+MST)

    题目链接: Mountaineers  Gym - 102021M 题目大意:给你一个n*m的矩阵,a[i][j]代表当前方块的高度,然后每次询问给你一个起点和终点,然后问你在这个图上你选择一条路径, ...