Considérez le scénario suivant:
CREATE DOMAIN dom_zipcode AS text;
ALTER DOMAIN dom_zipcode
ADD CONSTRAINT zipchk CHECK (char_length(VALUE) = 5);
Maintenant, si je veux laisser tomber cette contrainte avec ALTER DOMAIN
, le manuel dit :
ALTER DOMAIN name
DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ]
Mais comment pouvons-nous trouver constraint_name
? \dD
montre que la définition de la contrainte (CHECK
déclaration).
\dD dom_zipcode ;
List of domains
Schema | Name | Type | Modifier | Check
--------+-------------+------+----------+--------------------------------
public | dom_zipcode | text | | CHECK (char_length(VALUE) = 5)
(1 row)
Je peux jeter le schéma en utilisant pg_dump
, mais je crois qu'il doit exister un moyen plus élégant d'établir cela en utilisant le terminal psql
.
SELECT conname
FROM pg_constraint
WHERE contypid = 'dom_zipcode'::regtype;
INFORMATION_SCHEMA.DOMAIN_CONSTRAINTS
Vous pouvez également interroger cela dans domain_constraints
table du 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');