其实查找这篇文章 我主要用的sql 是这句 select * from user_cons_columns t where t.constraint_name like 'FK_CTS_CONT_REINS__CRR';
html
原由:sql
系统测试的时候发现若是某条记录已经被引用了,这个时候删除这条记录会引发数据不一致,系统会报错。好比警员信息,在考勤记录表里会引用警员ID,若是考勤记录表中已经存在这个警员ID了,这时从警员表中删除该警员,就会引发数据不一致,前台报错。因此,这个时候我就想查找数据库中全部引用这个ID的表数据库
约束用于确保数据库数据知足特定的商业逻辑或者企业规则,若是定义了约束,而且数据不符oracle
合约束,那么DML操做(INSERT、UPDATE、DELETE)将不能成功执行。约束包括NOT NULL、UNIQUE、PRIMARY KEY、FOREING KEY 以及CHECK等五种类型测试
NOT NULL约束:优化
NOT NULL 约束强制列不接受 NULL 值。spa
UNIQUE约束:.net
UNIQUE 约束惟一标识数据库表中的每条记录。orm
PRIMARY KEY 约束:htm
PRIMARY KEY 约束惟一标识数据库表中的每条记录。主键必须包含惟一的值。
每一个表应该都一个主键,而且每一个表只能有一个主键。主键列不能包含 NULL 值。
FOREING KEY约束:
外部键列的数据必须在主表的主键列(或唯一列)中存在,或者为NULL,
CHECK约束:
CHECK 约束用于限制列中的值的范围。
若是对单个列定义 CHECK 约束,那么该列只容许特定的值。
若是对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
1、咱们建立的对象能够从"USER_"开通的视图中查看。若是在模式中建立了10张表,那么从USER_TABLES中查询将返回10行,每一行是关于一张表的特性信息
USER_TABLES不能查看非当前用户模式下建立的表。
ALL_TABLES视图不但显示当前用户模式下建立的表,并且显示受权可以访问的表信息
咱们关心的视图如下列前缀命名:
·USER_ 当前用户模式下建立的对象
·ALL_ 当前用户模式下建立的对象加上当前用户能访问的其余用户建立的对象。ALL视图经常包含一个"OWNER"列,反映出可以访问的对象的全部者。在USER_TABLES表中不能看到OWNER列是由于你就是在这个视图中全部表的全部者;在ALL_TABLES中有一个OWNER字段。
·DBA_ 它提供了整个数据库的信息。包括数据库中全部表的名字和拥有者——包括SYS模式下的基本表
这些前缀在限制咱们想看到的、须要看到的、应当被容许看到的范围上是一个帮助。查看当前模式下建立的表,查询USER_TABLES;
查看全部咱们建立的表以及被受权能够从其余用户模式下访问的表,查询ALL_TABLES;
具备DBA或SELECT_CATALOG_ROLE角色的用户能够查询DBA_TABLES来查询数据库中全部表的列表;
不是全部视图下都有一个USER、ALL、和DBA前缀,有一些视图仅存在于dba视图范围。好比:DBA_DATA_FILES。
在开发环境中有时会访问DBA视图,容许开发人员探究Oracle数据字典是没有害处的。你能够在不拥有DBA角色的状况下得到这个权限。通常,把CONNECT和RESOURCE角色给应用开发者,他不能访问这些,你能够把SELECT ANY TABLE权限或SELECT_CATALOG角色赋给一个用户,这样他将被容许访问整个数据字典。
一我的对数据字典理解的越多,越能接触到数据库中复杂的操做,越能对SQL语句优化敏感。
2、数据字典视图:概要
在数据字典视图中有一些隐含的关系。发现这些关系经常是使用SQL查询对数据字典验证的结果,幸运的是,在数据字典中有许多使用名称的特征。
例如:USER_TABLES表中每个表包含一个单独的行。每一行包含一张表的详细信息,好比表的物理存储参数。这些数据提供的扩展信息告诉你表是怎么增加的。
USER_TAB_COLUMNS视图中在USER_TABLES表中的每一张表的每一行包含一条记录。若是一张表有10个字段,那么,你将在USER_TAB_COLUMNS表中找到10行记录,是关于每一字段的详细信息。好比字段数据类型。字段名TABLE_NAME在USER_TABLE 和USER_TAB_COLUMNS表中都有,所以能够很容易的把他们链接起来。
USER_OBJECTS 用户对象视图
ALL_OBJECTS 全部对象视图
DBA_OBJECTS DBA对象视图
USER_SEQUENCES 用户序列对象视图,在USER_SEQUENCES的记录也会出如今USER_OBJECTS表中
3、约束视图
有两个数据字典视图提供了约束的详细信息。USER_CONSTRAINTS和USER_CONS_COLUMNS.
一张表可能有也可能没有约束,对于一张表的每个约束在USER_CONSTRAINTS中都有一条记录描述这个约束。包括约束应用到的表名称。若是你知道约束名想知道约束类型,查询USER_CONSTRAINTS表。这个视图描述了约束的定义。它不提供约束定义在哪些字段名称上。USER_CONSTRAINTS中CONSTRAINT_NAME中表示约束名,若是创建表的时候没有指定约束名,系统默认的约束名相似“SYS_C006274”这样的一串字母。R_CONSTRAINT_NAME是外键引用表主键的约束名。CONSTRAINT_TYPE字段中P:表示主键,R:表示外键,C表示NOT NULL或CHECK,U表示UNIQUE
在USER_CONS_COLUMNS视图中显示约束的字段名称。若是主键是个联合主键,这个视图中将有这个约束的两条记录。联合主键的每个字段对应一条记录。每一条记录经过POSITION(在联合主键中的位置)来区别。能够根据CONSTRAINT_NAME字段将USER_CONSTRAINTS和USER_CONS_COLUMNS关联起来。
三:获得想要的结果
分为两步:
//查询表的主键约束名
select * from user_constraints e where e.table_name=’’—-处输入表名
//查询全部引用到该主键的记录
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=''—此处输入刚才查询出来的表主键的约束名
参考文章:
http://blog.csdn.net/stevene/archive/2006/02/10/596294.aspx
http://www.cnblogs.com/ljcbest/archive/2010/09/02/1816346.html