views:

21

answers:

1

How do I get a list of all constraints from a particular database?

+2  A: 

Use the information_schema.table_constraints table to get the names of the constraints defined on each table:

select *
from information_schema.table_constraints
where constraint_schema = 'YOUR_DB'

Use the information_schema.key_column_usage table to get the fields in each one of those constraints:

select *
from information_schema.key_column_usage
where constraint_schema = 'YOUR_DB'

If instead you are talking about foreign key constraints, use information_schema.referential_constraints:

select *
from information_schema.referential_constraints
where constraint_schema = 'YOUR_DB'
Senseful
This list will only include UNIQUE, PRIMARY KEY, or FOREIGN KEY constraints. CHECK is possible, but isn't enforced. DEFAULT constraints will not be visible using this query.
OMG Ponies
MySQL does not store CHECK constraints. If you try to define one, it parses and silently discards it.
Bill Karwin
The DEFAULT value doesn't count as a constraint. It's stored in `information_schema.columns.column_default`.
Bill Karwin