MySQL 테이블에서 제약을 제거하는 방법
테이블에서 구속조건을 제거하고 싶습니다.질문 내용:
ALTER TABLE `tbl_magazine_issue`
DROP CONSTRAINT `FK_tbl_magazine_issue_mst_users`
하지만 오류가 발생했습니다.
#1064
- SQL 구문에 오류가 있습니다. MySQL Server 버전에 해당하는 설명서에서 '제약'에 가까운 올바른 구문을 확인하십시오.FK_tbl_magazine_issue_mst_users
회선 1의 '
Mysql에는 외부 키 제약 조건을 삭제하기 위한 특별한 구문이 있습니다.
ALTER TABLE tbl_magazine_issue
DROP FOREIGN KEY FK_tbl_magazine_issue_mst_users
저도 같은 문제가 있어서 이 코드로 해결했습니다.
ALTER TABLE `table_name` DROP FOREIGN KEY `id_name_fk`;
ALTER TABLE `table_name` DROP INDEX `id_name_fk`;
같은 것은 없다DROP CONSTRAINT
MySQL에 있습니다.고객님의 경우DROP FOREIGN KEY
대신.
제약조건이 외부 키가 아닌 경우(예: 'UNIQUIC CONSTRARECT(colA, colB)'를 사용하여 추가된 키)는 다음을 사용하여 삭제할 수 있는 인덱스입니다.ALTER TABLE ... DROP INDEX ...
Robert Knight의 답변에 조금 더 덧붙이자면, 투고 제목 자체에 외래 키가 기재되어 있지 않기 때문에(또, 완전한 코드 샘플이 포함되어 있지 않고, SO의 코멘트 코드 블록도 답변의 코드 블록과 같이 표시되지 않기 때문에), 이것을 독자적인 제약으로 추가합니다.다음의 몇개의 조작을 실시하면, 제약이 해소됩니다.
ALTER TABLE `table_name` DROP KEY `uc_name`;
또는
ALTER TABLE `table_name` DROP INDEX `uc_name`;
또한 mysql 데이터베이스에서 모든 외부 키 체크를 일시적으로 비활성화할 수도 있습니다. SET FOREIGN_KEY_CHECKS=0;
다시 활성화하려면: SET FOREIGN_KEY_CHECKS=1;
일부 ORM 또는 프레임워크에서는 외부 키에 대해 기본값과 다른 명명 규칙을 사용합니다.FK_[parent table]_[referenced table]_[referencing field]
왜냐하면 그들은 바뀔 수 있기 때문이다.
예를 들어 Larabel은[parent table]_[referencing field]_foreign
명명규칙으로 사용합니다.다음 쿼리를 사용하여 외부 키의 이름을 표시할 수 있습니다.
SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_SCHEMA = '<database>' AND REFERENCED_TABLE_NAME = '<table>';
그런 다음 앞에서 설명한 DROP FORNE KEY 쿼리와 해당 고유 이름을 실행하여 외부 키를 삭제합니다.
마리아를 이용해서 오시는 분들을 위해서DB:
MariaDB는 일반적으로 DROP CONSTRECT 문을 사용할 수 있습니다.예를 들어 체크 제약 조건을 드롭하는 경우입니다.
ALTER TABLE table_name
DROP CONSTRAINT constraint_name;
https://mariadb.com/kb/en/library/alter-table/
구속조건을 제거하는 가장 간단한 방법은 구문을 사용하는 것입니다.ALTER TABLE tbl_name DROP CONSTRAINT symbol;
MySQL 8.0.19에 도입되었습니다.
MySQL 8.0.19 이후 ALTER TABLE은 제약조건의 이름에서 제약조건 유형이 결정되는 모든 유형의 기존 제약조건을 폐기 및 변경하기 위한 보다 일반적인(및 SQL 표준) 구문을 허용합니다.
ALTER TABLE tbl_magazine_issue DROP CONSTRAINT FK_tbl_magazine_issue_mst_users;
- 테이블의 구조 뷰로 이동합니다.
- 상단 a에는 2가지 옵션이 표시됩니다.테이블 구조 b.관계 뷰.
- 여기서 Relation 뷰를 클릭하면 외부 키 제약 조건을 해제할 수 있습니다.여기서 모든 관계를 맺게 될 것이다.
MySQL에서 제거할 제약 조건의 종류를 지정해야 합니다.
예:
CONSTRAINT `shop_ibfk_1` FOREIGN KEY (`fb_user_id`) REFERENCES `fb_user` (`id`),
CONSTRAINT `shop_chk_1` CHECK ((`import_lock` in (0,1)))
첫 번째 삭제 방법:
alter mytable shop drop FOREIGN KEY `shop_ibfk_1`;
에 관한 두 번째 것
alter mytable drop CHECK `shop_chk_1`;
이것은 MySQL에서 동작하여 제약조건을 삭제합니다.
alter table tablename drop primary key;
alter table tablename drop foreign key;
언급URL : https://stackoverflow.com/questions/14122031/how-to-remove-constraints-from-my-mysql-table
'programing' 카테고리의 다른 글
MySQL/MariaDB FOUND_ROWS에서 행이 반환되지 않았더라도 1이 반환됨 (0) | 2022.10.22 |
---|---|
?: PHP의 연산자('Elvis 연산자') (0) | 2022.10.12 |
데이터베이스 복원 시 이모티콘이 유지되지 않음 (0) | 2022.10.12 |
mariaDB, 여러 테이블에서 삭제가 정말 안전합니까? (0) | 2022.10.12 |
php에서 실행 시간 초과를 늘리는 방법 (0) | 2022.10.12 |