2012-10-30 14 views

risposta

7

Si potrebbe utilizzare

SHOW CREATE TABLE `tablename` 

Per ottenere l'intera definizione della tabella. Questo include eventuali vincoli di chiave esterna.

17

Sì. Basta interrogare il INFORMATION_SCHEMA

SELECT * FROM information_schema.REFERENTIAL_CONSTRAINTS 

O più precisamente

-- This query will list all constraints, their delete rule, 
-- the constraint table/column list, and the referenced table 
SELECT 
    r.CONSTRAINT_NAME, 
    r.DELETE_RULE, 
    r.TABLE_NAME, 
    GROUP_CONCAT(k.COLUMN_NAME SEPARATOR ', ') AS `constraint columns`, 
    r.REFERENCED_TABLE_NAME 
FROM information_schema.REFERENTIAL_CONSTRAINTS r 
    JOIN information_schema.KEY_COLUMN_USAGE k 
    USING (CONSTRAINT_CATALOG, CONSTRAINT_SCHEMA, CONSTRAINT_NAME) 
-- using MySQL's GROUP BY clause. In other DB's more columns would need to be 
-- specified! 
GROUP BY r.CONSTRAINT_CATALOG, 
     r.CONSTRAINT_SCHEMA, 
     r.CONSTRAINT_NAME 

Leggi di più riguardo la REFERENTIAL_CONSTRAINTS table in the manual

Problemi correlati