在Oracle SQL Developer中,如果我正在查看一个表的信息,我可以查看约束,这让我可以看到外键(因此这个表引用了哪些表),我还可以查看依赖关系,以了解哪些包等引用了这个表。但我不确定如何查找哪些表引用了该表。
例如,假设我正在查看emp
表。还有另一个表emp_dept
,它捕获哪些员工在哪些部门工作,该表通过emp_id
引用emp
表的主键。有没有办法(通过程序中的一些UI元素,而不是SQL)发现emp_dept
表引用了emp
表,而我不必知道emp_dept
表的存在?
发布于 2009-07-17 14:56:56
您可以从ALL_CONSTRAINTS
视图中查询:
SELECT table_name
FROM ALL_CONSTRAINTS
WHERE constraint_type = 'R' -- "Referential integrity"
AND r_constraint_name IN
( SELECT constraint_name
FROM ALL_CONSTRAINTS
WHERE table_name = 'EMP'
AND constraint_type IN ('U', 'P') -- "Unique" or "Primary key"
);
发布于 2015-08-11 02:14:05
SQL Developer 4.1于2015年5月发布,它添加了一个Model选项卡,其中显示了以实体关系图格式引用您的表的表的外键。
发布于 2014-12-01 20:00:28
SELECT DISTINCT table_name,
constraint_name,
column_name,
r_table_name,
position,
constraint_type
FROM (SELECT uc.table_name,
uc.constraint_name,
cols.column_name,
(SELECT table_name
FROM user_constraints
WHERE constraint_name = uc.r_constraint_name) r_table_name,
(SELECT column_name
FROM user_cons_columns
WHERE constraint_name = uc.r_constraint_name
AND position = cols.position) r_column_name,
cols.position,
uc.constraint_type
FROM user_constraints uc
inner join user_cons_columns cols
ON uc.constraint_name = cols.constraint_name
WHERE constraint_type != 'C')
START WITH table_name = '&&tableName'
AND column_name = '&&columnName'
CONNECT BY NOCYCLE PRIOR table_name = r_table_name
AND PRIOR column_name = r_column_name;
https://stackoverflow.com/questions/1143728
复制相似问题