如何在Oracle和PostgreSQL中获取表级检查约束

时间:2016-07-03 18:08:31

标签: oracle postgresql constraints

我想知道是否有一些特定的方法可以在Oracle和PostgreSQL中获取表级检查约束。

我可以获取表格中的所有检查约束,但我只想获得这个特定的检查约束,我不知道是否有任何特定的查询。

谢谢!

2 个答案:

答案 0 :(得分:1)

在PostgreSQL中有一个系统目录pg_constraint

  

目录pg_constraint存储check,primary key,unique,foreign   关键和表的排除约束。 (列限制不是   特别待遇。每个列约束都等同于某个表   约束。)非空约束在pg_attribute中表示   目录,不在这里。

     

用户定义的约束触发器(使用CREATE CONSTRAINT创建   TRIGGER)也在这个表格中引入了一个条目。

     

检查域的约束也存储在这里。

SELECT
    *
FROM
    pg_constraint
WHERE
    contype = 'c' AND   -- check constraint
    conrelid != 0 AND   -- table constraint
    conname = 'my_check';

contype列包含约束类型,c用于检查约束。 conrelid列包含此约束所在表的oid0如果不是表约束。

答案 1 :(得分:-1)

对于Oracle基本视图是ALL_CONSTRAINTS

查询,以获取特定表中的特定约束:

SELECT *
  FROM all_constraints
 WHERE constraint_name LIKE upper('%&your_costraint%')
   AND table_name LIKE upper('%&your_table%');