mysql에서 외부 키의 이름을 변경하려면 어떻게 해야 합니까?
대규모 테이블에서 장기간에 걸친 마이그레이션을 방금 완료한 결과, conversation_tags 테이블에서 다음과 같은 제약 사항이 발생했습니다.
CONSTRAINT `conversation_tags_ibfk_1` FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`)
불행히도 어딘가에 버그가 있었습니다. 왜냐하면 우리가 원하는 것은:
CONSTRAINT `fk_conversation_tags_tags` FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`)
제약 조건을 삭제하고 다시 추가하는 것은 또 다른 두 개의 긴 쿼리를 의미합니다.단일 쿼리에서 제약 조건 이름을 변경할 수 있는 방법이 있습니까?
설명서에서:
하나의 ALTER TABLE 문에는 여러 개의 ADD, ALTER, DROP 및 CHANGE 절이 쉼표로 구분되어 허용됩니다.표준 SQL에 대한 MySQL 확장으로 ALTER TABLE 문당 각 절 중 하나만 허용합니다.
이렇게 하면 드롭과 재생성을 하나의 쿼리로 결합할 수 있으며 제약 조건을 드롭하고 두 개의 쿼리로 만드는 것보다 빠를 수 있습니다.
ALTER TABLE conversation_tags
DROP FOREIGN KEY `conversation_tags_ibfk_1`,
ADD CONSTRAINT `fk_conversation_tags_tags` FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`);
죄송합니다. 제약 조건은 내 SQL에서만 삭제하고 다시 연결할 수 있습니다.
이 기능은 mysql ALTER TABLE 구문에서 사용할 수 없는 것 같습니다.
그러나 Oracle에 대해서는 지원됩니다.
MySQL 용어 "제약사항" 대 "외산 키" 차이에서 제 답변을 참조해 주십시오.제약 조건 이름이 원하는 것과 다른 이유를 이해합니다.그러나 MySQL에는 이름 변경 제한 기능이 없으므로 원하는 이름으로 DROP 및 FK를 추가해야 합니다. https://dev.mysql.com/doc/refman/5.5/en/alter-table.html
언급URL : https://stackoverflow.com/questions/6188011/how-do-i-rename-a-foreign-key-in-mysql
'source' 카테고리의 다른 글
| WooCommerce:관리 제품 목록에서 제품명 옆에 제품 유형을 추가하는 방법 (0) | 2023.09.17 |
|---|---|
| OpenXML을 사용하여 병합 셀 만들기 (0) | 2023.09.17 |
| mysql_connect(): 헤더 및 클라이언트 라이브러리 마이너 버전 불일치 라이브러리:100005 (0) | 2023.09.17 |
| SQL Server와 Oracle 중 확장성 측면에서 더 나은 것은 무엇입니까? (0) | 2023.09.17 |
| 폴리곤 PHP에서 점 찾기 (0) | 2023.09.17 |