好的,所以我是SQL的新手,并不熟悉Oracle SQLDev,但我正在制作的工具要求我访问Oracle数据库并收集一些信息。我正在尝试计算外键指向的表。
这个数据库有数千个表。
示例:
我有一个表(TASKS),其中包含以下列[id,user,task_type,task_group]。问题是所有这些值都是与另一个表对应的id,并且表命名约定不直观。
那我怎样才能找出哪个表task_type
指向哪个?
答案 0 :(得分:4)
select acc.table_name REFERENCING_TABLE_NAME, acc.column_name REFERENCING_COLUMN_NAME
from all_constraints ac1,
all_constraints ac2,
all_cons_columns acc
where ac1.constraint_type = 'P'
and ac1.table_name = :table_name
and ac2.r_constraint_name = ac1.constraint_name
and ac2.constraint_name = acc.constraint_name;
应该有效
答案 1 :(得分:1)
请参阅我的帖子(第二个答案),了解如何将其添加为sqldeveloper中的扩展名:
How can I find which tables reference a given table in Oracle SQL Developer?
答案 2 :(得分:-1)
select table_name, constraint_name, status, owner
from all_constraints
where r_owner = :r_owner
and constraint_type = 'R'
and r_constraint_name in
(
select constraint_name from all_constraints
where constraint_type in ('P', 'U')
and table_name = :r_table_name
and owner = :r_owner
)
order by table_name, constraint_name