source

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

lovecheck 2022. 12. 28. 21:46
반응형

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

특정 데이터베이스에서 모든 제약사항 목록을 가져오려면 어떻게 해야 합니까?

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

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

표를 사용하여 각 제약조건의 필드를 가져옵니다.

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

외부 키 제약에 대해 설명하는 경우 다음을 사용합니다.

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

사용자_제약에서 *를 선택합니다.여기서 TABLE_NAME = "tabnam";

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

반응형