如何获取具有外键的表列表?

时间:2016-10-06 12:25:52

标签: oracle plsql

我想要truncate table tableA,但我必须先禁用所有外键或删除它们,然后在执行此操作之前将其引用到tableA。你能告诉我如何获得具有tableA外键的表的名称吗?

2 个答案:

答案 0 :(得分:1)

好的,假设我想从DEPT架构中删除SCOTT表。我检查并发现它有一个名为PK_DEPT的主键。然后我运行下面的查询(针对表ALL_CONSTRAINTS)并找到引用该表的模式和表。

请记住,所有目录表中的所有字符串值(表名,约束类型等)始终为UPPER CASE。在编写WHERE条件时,这很重要。

select owner, table_name 
from   all_constraints 
where  constraint_type = 'R' and r_owner = 'SCOTT' and r_constraint_name = 'PK_DEPT';

OWNER                TABLE_NAME
-------------------- --------------------
SCOTT                EMP

1 row selected.

答案 1 :(得分:1)

一般解决方案。

列出具有 P (主键)或 U 类型的表:tablename 的外键约束的所有表和所有者(唯一约束)

_inherits3.default(SpecRunner, _File);