【问题标题】:Oracle Constraint CheckOracle 约束检查
【发布时间】:2014-06-26 01:13:08
【问题描述】:

我想检查film.language_id 是否指代language.language_id。 我使用了代码:

SELECT *
FROM all_tab_columns
WHERE column_name = 'film.language';

结果:

no rows selected

这是否意味着没有引用/参照约束?

【问题讨论】:

  • film.language 是列名?它不是

标签: oracle


【解决方案1】:

如果你想通过外键约束判断一列是否引用了另一列,你可以执行以下操作:

找出列是否在约束中:

select constraint_name from user_cons_columns
where table_name='<Your_table>'
and column_name='<Your_column>';

如果是,这将为您提供该约束的名称。 接下来可以查明该约束是否为外键约束,以及外键指向的位置:

select constraint_type
      ,r_constraint_name
  from user_constraints
 where constraint_name='<your constraint name>';

如果约束是外键约束,则它的类型为“R”。这还将为您提供与外键相关的主键约束的名称。

给定主键约束的名称,您可以找到如下表和列:

select table_name
      ,column_name
  from user_cons_columns
 where constraint_name = 'Your PK constraint'

为了让生活更轻松,您可以将所有这些查询连接在一起。但我把它留给你。

【讨论】:

  • 它可以有多个约束类型。例如“P”和“R”类型的样本?
猜你喜欢
  • 1970-01-01
  • 2021-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
相关资源
最近更新 更多