web-dev-qa-db-ja.com

ドメインの制約をリストするにはどうすればよいですか?

次のシナリオを検討してください。

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端子を使用してこれを確立するより洗練された方法が存在する必要があると思います。

2
Adam Matan

PostgreSQLのシステムカタログ

SELECT conname
FROM pg_constraint
WHERE contypid = 'dom_zipcode'::regtype;
2
Mladen Uzelac

SQL仕様のINFORMATION_SCHEMA.DOMAIN_CONSTRAINTS

また、これをdomain_constraintsinformation_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');
0
Evan Carroll