답변:
먼저 다음과 FOREIGN KEY
같은 방법으로 제약 조건 이름을 찾으십시오 .
SELECT
TABLE_NAME,
COLUMN_NAME,
CONSTRAINT_NAME, -- <<-- the one you want!
REFERENCED_TABLE_NAME,
REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
REFERENCED_TABLE_NAME = 'My_Table';
그런 다음 다음과 같은 방법으로 명명 된 제약 조건을 제거 할 수 있습니다.
ALTER TABLE My_Table DROP FOREIGN KEY My_Table_Constraint;
주석에서 @SteffenWinkler가 제안한 것처럼 다른 스키마 / 데이터베이스에 해당 이름의 테이블이 두 개 이상 있으면 where 절에 술어를 추가 할 수 있습니다.
AND TABLE_SCHEMA = 'My_Database';
SHOW CREATE TABLE My_Table;
.
My_Table
는 가지고있는 다른 테이블에 대한 제약 조건 만 보여줍니다 . 질문은 My_Table
다른 테이블 에 대한 제약 조건을 묻습니다 .
AND TABLE_SCHEMA = 'My_Database';
위의 쿼리를 편집했습니다. 참조 된 테이블 이름을 참조 된 테이블 이름으로 변경 한 테이블 이름은 참조되는 테이블이므로 원래 쿼리의 결과에 테이블의 외래 키가 표시되지 않습니다.
SELECT
TABLE_NAME,
COLUMN_NAME,
CONSTRAINT_NAME, -- <<-- the one you want!
REFERENCED_TABLE_NAME,
REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
Table_name = 'case_qualitycontrolcase' and constraint_name = f