PostgreSQL 8.0.1 Documentation | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 41. System Catalogs | Fast Forward | Next |
41.10. pg_constraint
The catalog pg_constraint stores check, primary key, unique, and foreign key constraints on tables. (Column constraints are not treated specially. Every column constraint is equivalent to some table constraint.) Not-null constraints are represented in the pg_attribute catalog.
Check constraints on domains are stored here, too.
Table 41-10. pg_constraint Columns
Name | Type | References | Description |
---|---|---|---|
conname | name | Constraint name (not necessarily unique!) | |
connamespace | oid | pg_namespace.oid | The OID of the namespace that contains this constraint |
contype | char | c = check constraint, f = foreign key constraint, p = primary key constraint, u = unique constraint | |
condeferrable | bool | Is the constraint deferrable? | |
condeferred | bool | Is the constraint deferred by default? | |
conrelid | oid | pg_class.oid | The table this constraint is on; 0 if not a table constraint |
contypid | oid | pg_type.oid | The domain this constraint is on; 0 if not a domain constraint |
confrelid | oid | pg_class.oid | If a foreign key, the referenced table; else 0 |
confupdtype | char | Foreign key update action code | |
confdeltype | char | Foreign key deletion action code | |
confmatchtype | char | Foreign key match type | |
conkey | int2[] | pg_attribute.attnum | If a table constraint, list of columns which the constraint constrains |
confkey | int2[] | pg_attribute.attnum | If a foreign key, list of the referenced columns |
conbin | text | If a check constraint, an internal representation of the expression | |
consrc | text | If a check constraint, a human-readable representation of the expression |
Note: consrc is not updated when referenced objects change; for example, it won't track renaming of columns. Rather than relying on this field, it's best to use
pg_get_constraintdef()
to extract the definition of a check constraint.
Note: pg_class.relchecks needs to agree with the number of check-constraint entries found in this table for the given relation.