2017-05-09 10 views
0

私はpostgresのschemaとtableとともにconstraint節を問い合わせようとしています。私は有用な表としてinformation_schema.check_constraintsを特定することにまで至りました。問題はconstraint_catalogスキーマとテーブル(Postgres)のクエリー制約節

select * 
from information_schema.check_constraints 

結果、constraint_schemaconstraint_namecheck_clauseをやっていることです。 check_clauseは私が望むもので、このテーブルも私にconstraint_schemaを与えます。ただし、この制約が定義されている表は提供されません。私の現在のデータベースでは、同じスキーマ内の異なるテーブルに定義された同じ名前の制約があります(それはおそらくデザインが悪いですが、対処する必要があります)。ここでもテーブル名を取得できますか?

答えて

1
select 
    conname, 
    connamespace::regnamespace as schemaname, 
    conrelid::regclass as tablename, 
    consrc as checkclause, 
    pg_get_constraintdef(oid) as definition 
from 
    pg_constraint 
where 
    contype = 'c' 
    and conrelid <> 0; -- to get only table constraints 

About pg_constraint

About Object Identifier Types

関連する問題