Bekijk alle beperkingen voor externe sleutels voor de volledige MySQL-database

Ik heb een grote database met meer dan 150 tabellen die ik onlangs heb gekregen. Ik vraag me af of er een gemakkelijke manier is om alle beperkingen voor externe sleutels voor de hele DB te bekijken in plaats van per tabel.


Antwoord 1, autoriteit 100%

U kunt de INFORMATION_SCHEMAgebruiken tabellen hiervoor. Bijvoorbeeld de INFORMATION_SCHEMA TABLE_CONSTRAINTStabel.

Zoiets zou het moeten doen:

select *
from INFORMATION_SCHEMA.TABLE_CONSTRAINTS
where CONSTRAINT_TYPE = 'FOREIGN KEY'

Antwoord 2, autoriteit 27%

Dit is waar ik de voorkeur aan geef om nuttige informatie te krijgen:

SELECT CONSTRAINT_NAME,
       UNIQUE_CONSTRAINT_NAME, 
       MATCH_OPTION, 
       UPDATE_RULE,
       DELETE_RULE,
       TABLE_NAME,
       REFERENCED_TABLE_NAME
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
WHERE CONSTRAINT_SCHEMA = 'your_database_name'

Antwoord 3, autoriteit 8%

Het momenteel geaccepteerde antwoord van gebruiker RedFilter werkt prima als je maar 1 database hebt, maar niet als je er veel hebt.

Na het invoeren van use information_schema;gebruik deze zoekopdracht om externe sleutels te krijgen voor name_of_db:

select * from `table_constraints` where `table_schema` like `name_of_db` and `constraint_type` = 'FOREIGN KEY'

Gebruik deze query om externe sleutels voor name_of_dbop te slaan in het wereldbeschrijfbare bestand output_filepath_and_name:

select * from `table_constraints` where `table_schema` like "name_of_db" and `constraint_type` = 'FOREIGN KEY' into outfile "output_filepath_and_name" FIELDS TERMINATED BY ',' ENCLOSED BY '"';

Antwoord 4

SQL:

select constraint_name,
       table_schema,
       table_name
from   information_schema.table_constraints
where  constraint_schema = 'astdb'

Uitvoer:

+----------------------------+--------------+---------------------+
| constraint_name            | table_schema | table_name          |
+----------------------------+--------------+---------------------+
| PRIMARY                    | astdb        | asset_category      |
| PRIMARY                    | astdb        | asset_type          |
| PRIMARY                    | astdb        | asset_valuation     |
| PRIMARY                    | astdb        | assets              |
| PRIMARY                    | astdb        | com_mst             |
| PRIMARY                    | astdb        | com_typ             |
| PRIMARY                    | astdb        | ref_company_type    |
| PRIMARY                    | astdb        | supplier            |
| PRIMARY                    | astdb        | third_party_company |
| third_party_company_ibfk_1 | astdb        | third_party_company |
| PRIMARY                    | astdb        | user                |
| PRIMARY                    | astdb        | user_role           |
+----------------------------+--------------+---------------------+

Antwoord 5

Vraag deze code op

select constraint_name,
   table_schema,
   table_name
from   information_schema.table_constraints

Je krijgt constraint_name en filtert het table_schema dat de lijst is van database.

Kijk hier eens naar

Other episodes