我想知道是否有一些特定的方法可以在Oracle和PostgreSQL中获取表级检查约束。
我可以获取表格中的所有检查约束,但我只想获得这个特定的检查约束,我不知道是否有任何特定的查询。
谢谢!
答案 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
列包含此约束所在表的oid
,0
如果不是表约束。
答案 1 :(得分:-1)
对于Oracle基本视图是ALL_CONSTRAINTS
查询,以获取特定表中的特定约束:
SELECT *
FROM all_constraints
WHERE constraint_name LIKE upper('%&your_costraint%')
AND table_name LIKE upper('%&your_table%');