【问题标题】:Find Parent Key in a constraint在约束中查找父键
【发布时间】:2012-08-08 16:13:27
【问题描述】:

我遇到了异常

ORA-02291:违反完整性约束 (ADS.ADS_JOB_FAMILIES_F03) - 未找到父密钥

我在正在插入的表中找到了约束。

如何找到父键和子键...(列)。

注意:我使用的是 Oracle

【问题讨论】:

  • 您是否尝试识别主键约束的名称?定义主键约束的列?还是找不到的父键的值?还是您想寻找其他东西?
  • 只是想要一个查询来获取我的父键列和外键列。

标签: sql oracle constraints


【解决方案1】:

对于父表:

select * from all_constraints 
         where constraint_name in (
               select R_CONSTRAINT_NAME 
                 from all_constraints 
                where constraint_name = 'ADS_JOB_FAMILIES_F03'); 

对于父列:

select * 
  from all_cons_columns 
 where constraint_name in (
       select constraint_name 
         from all_constraints 
        where constraint_name in (
              select R_CONSTRAINT_NAME 
                from all_constraints 
               where constraint_name = 'ADS_JOB_FAMILIES_F03')); 

这并不完全完美,因为它忽略了约束的所有者。但我认为它对你有用。

编辑:我现在什至找到了this。这会给出这样的查询:

SELECT a.table_name, a.column_name, a.constraint_name, c.owner, 
       -- referenced pk
       c.r_owner, c_pk.table_name r_table_name, c_pk.constraint_name r_pk
  FROM all_cons_columns a
  JOIN all_constraints c ON a.owner = c.owner
                        AND a.constraint_name = c.constraint_name
  JOIN all_constraints c_pk ON c.r_owner = c_pk.owner
                           AND c.r_constraint_name = c_pk.constraint_name
 WHERE a.constraint_name = 'ADS_JOB_FAMILIES_F03';

【讨论】:

  • 谢谢 Hol..这正是我想要的查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 2013-08-25
  • 2016-03-12
  • 1970-01-01
相关资源
最近更新 更多