Nice programing

MySQL 데이터베이스의 제약 목록

nicepro 2020. 10. 7. 08:18
반응형

MySQL 데이터베이스의 제약 목록


특정 데이터베이스에서 모든 제약 목록을 얻으려면 어떻게해야합니까?


information_schema.table_constraints테이블을 사용하여 각 테이블에 정의 된 제약 조건의 이름을 가져옵니다.

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

information_schema.key_column_usage테이블을 사용하여 각 제약 조건의 필드를 가져옵니다.

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

대신 외래 키 제약 조건에 대해 이야기하는 경우 information_schema.referential_constraints다음을 사용하십시오 .

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

@Senseful의 훌륭한 답변입니다.

제약 이름 목록 (다른 세부 정보 / 열 제외) 만 찾는 사람들을 위해 수정 된 쿼리를 제시하고 있습니다.

SELECT DISTINCT(constraint_name) 
FROM information_schema.table_constraints 
WHERE constraint_schema = 'YOUR_DB' 
ORDER BY constraint_name ASC;

이것은 ON_UPDATE 및 ON_DELETE와 같은 제약 조건과 열 및 외부 열 이름을 모두 함께 포함하는 규칙뿐만 아니라 기본 및 외래 키 제약 조건을 확인하려는 경우에 유용합니다.

SELECT tc.constraint_schema,tc.constraint_name,tc.table_name,tc.constraint_type,kcu.table_name,kcu.column_name,kcu.referenced_table_name,kcu.referenced_column_name,rc.update_rule,rc.delete_rule

FROM information_schema.table_constraints tc

inner JOIN information_schema.key_column_usage kcu
ON tc.constraint_catalog = kcu.constraint_catalog
AND tc.constraint_schema = kcu.constraint_schema
AND tc.constraint_name = kcu.constraint_name
AND tc.table_name = kcu.table_name

LEFT JOIN information_schema.referential_constraints rc
ON tc.constraint_catalog = rc.constraint_catalog
AND tc.constraint_schema = rc.constraint_schema
AND tc.constraint_name = rc.constraint_name
AND tc.table_name = rc.table_name

WHERE tc.constraint_schema = 'my_db_name'

해당 열에 대한 추가 정보를 추가 할 수도 있습니다.이를 SQL에 추가하고 원하는 열을 선택하기 만하면됩니다.

LEFT JOIN information_schema.COLUMNS c
ON kcu.constraint_schema = c.table_schema
AND kcu.table_name = c.table_name
AND kcu.column_name = c.column_name

SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME = "tabnam";

참고 URL : https://stackoverflow.com/questions/3024981/list-of-constraints-from-mysql-database

반응형