我创建了一个SQL下面显示了一个错误。ORA-02291:完整性约束(MYDBS.FK31_1)我想看看这个FK 31是否可以运行SQL获取?请告诉我怎么做。我给你我的爱给予看到这个问题:)
4urapxun1#
如果您有访问权限,请从DBA_CONSTRAINTS和DBA_CONS_COLUMNS中选择。否则尝试ALL_CONSTRAINTS和ALL_CONS_COLUMNS。连接列表两次,以获得父表的主键或唯一键列与子表的外键列的组合:
DBA_CONSTRAINTS
DBA_CONS_COLUMNS
ALL_CONSTRAINTS
ALL_CONS_COLUMNS
select fkc.table_name as child_table, fkc.column_name as child_table_col, pkc.table_name as parent_table, pkc.column_name as parent_table_colfrom dba_constraints fkjoin dba_cons_columns fkc on fkc.owner = fk.owner and fkc.constraint_name = fk.constraint_namejoin dba_cons_columns pkc on pkc.owner = fk.r_owner and pkc.constraint_name = fk.r_constraint_name and pkc.position = fkc.positionwhere fk.owner = 'MYDBS'and fk.constraint_name = 'FK31_1'order by fkc.position;
select
fkc.table_name as child_table,
fkc.column_name as child_table_col,
pkc.table_name as parent_table,
pkc.column_name as parent_table_col
from dba_constraints fk
join dba_cons_columns fkc on fkc.owner = fk.owner
and fkc.constraint_name = fk.constraint_name
join dba_cons_columns pkc on pkc.owner = fk.r_owner
and pkc.constraint_name = fk.r_constraint_name
and pkc.position = fkc.position
where fk.owner = 'MYDBS'
and fk.constraint_name = 'FK31_1'
order by fkc.position;
jmo0nnb32#
Oracle提供了大量的元数据视图,从ALL_,USER_和DBA_开始。在我们的例子中,我们需要ALL_CONSTRAINTS,您可以查询为
ALL_
USER_
DBA_
select * from ALL_CONSTRAINTS where CONSTRAINT_NAME = 'FK31_1'
select *
from ALL_CONSTRAINTS
where CONSTRAINT_NAME = 'FK31_1'
**编辑:**正如 Jeff Holt 在下面的评论中提到的,你也可以尝试ALL_CONS_COLUMNS:
select * from ALL_CONS_COLUMNS where CONSTRAINT_NAME = 'FK31_1'
from ALL_CONS_COLUMNS
rslzwgfq3#
下面是关于包含FK信息的DBA视图的图表(显示了各种约束(PK,UK,FK,NOT-NULL))
3条答案
按热度按时间4urapxun1#
如果您有访问权限,请从
DBA_CONSTRAINTS
和DBA_CONS_COLUMNS
中选择。否则尝试ALL_CONSTRAINTS
和ALL_CONS_COLUMNS
。连接列表两次,以获得父表的主键或唯一键列与子表的外键列的组合:jmo0nnb32#
Oracle提供了大量的元数据视图,从
ALL_
,USER_
和DBA_
开始。在我们的例子中,我们需要ALL_CONSTRAINTS,您可以查询为**编辑:**正如 Jeff Holt 在下面的评论中提到的,你也可以尝试ALL_CONS_COLUMNS:
rslzwgfq3#
下面是关于包含FK信息的DBA视图的图表(显示了各种约束(PK,UK,FK,NOT-NULL))