외래 키 제약 조건이 있는 테이블 자르기
외래 키 제약 조건이 있는 테이블을 자르는 것은 어려울 수 있습니다. mygroup 테이블을 자르려고 시도했는데 다음 오류가 발생했다고 상상해 보세요.
ERROR 1701 (42000): Cannot truncate a table referenced in a foreign key constraint (mytest.instance, CONSTRAINT instance_ibfk_1 FOREIGN KEY (GroupID) REFERENCES mytest.mygroup (ID))
데이터베이스 스키마:
CREATE TABLE mygroup ( ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY ) ENGINE=InnoDB; CREATE TABLE instance ( ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, GroupID INT NOT NULL, DateTime DATETIME DEFAULT NULL, FOREIGN KEY (GroupID) REFERENCES mygroup(ID) ON DELETE CASCADE, UNIQUE(GroupID) ) ENGINE=InnoDB;
외래 키 확인 비활성화:
외래 키로 테이블을 자르는 일반적인 방법 제약 조건은 이를 일시적으로 비활성화하는 것입니다:
SET FOREIGN_KEY_CHECKS = 0; TRUNCATE mygroup; TRUNCATE instance; SET FOREIGN_KEY_CHECKS = 1;
주의: 외래 키 검사를 비활성화하면 제약 조건을 위반하는 데이터가 테이블에 삽입될 수 있습니다. 이로 인해 데이터 무결성 문제가 발생할 수 있습니다.
대안 고려:
가능하면 TRUNCATE 대신 DELETE 문 사용을 고려하세요.
DELETE FROM mygroup; DELETE FROM instance;
DELETE는 외래 키 제약 조건을 준수하면서 테이블에서 모든 레코드를 제거합니다. 하지만 TRUNCATE보다 실행하는데 시간이 더 걸립니다.
위 내용은 MySQL에서 외래 키 제약 조건이 있는 테이블을 자르는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!