次のシナリオを検討してください。
CREATE DOMAIN dom_zipcode AS text;
ALTER DOMAIN dom_zipcode
ADD CONSTRAINT zipchk CHECK (char_length(VALUE) = 5);
ここで、- ALTER DOMAIN
を使用してその制約を削除する場合は、 マニュアルによると :
ALTER DOMAIN name
DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ]
しかし、どのようにしてconstraint_name
を見つけることができますか? \dD
は、制約の定義(CHECK
ステートメント)のみを表示します。
\dD dom_zipcode ;
List of domains
Schema | Name | Type | Modifier | Check
--------+-------------+------+----------+--------------------------------
public | dom_zipcode | text | | CHECK (char_length(VALUE) = 5)
(1 row)
pg_dump
を使用してスキーマをダンプできますが、psql
端子を使用してこれを確立するより洗練された方法が存在する必要があると思います。
SELECT conname
FROM pg_constraint
WHERE contypid = 'dom_zipcode'::regtype;
INFORMATION_SCHEMA.DOMAIN_CONSTRAINTS
また、これをdomain_constraints
の information_schema
テーブルでクエリすることもできます-
SELECT FORMAT('%I.%I.%I', constraint_schema, constraint_catalog, constraint_name)
FROM information_schema.domain_constraints
WHERE (domain_catalog,domain_schema,domain_name) = ('test','public','dom_zipcode');