MySQL에서 참조 무결성 검사 연기: 가능합니까?
MySQL에서는 참조 무결성 검사가 커밋될 때까지 연기되지 않습니다. MySQL 문서에 설명된 대로:
InnoDB는 UNIQUE 및 FOREIGN KEY 제약 조건을 행별로 확인합니다. 외래 키 검사를 수행할 때 InnoDB는 확인해야 하는 하위 또는 상위 레코드에 공유 행 수준 잠금을 설정합니다. InnoDB는 외래 키 제약 조건을 즉시 확인합니다. 검사는 트랜잭션 커밋으로 연기되지 않습니다.
이 동작은 트랜잭션이 끝날 때까지 제약 조건 검사를 연기해야 한다고 지정하는 SQL 표준에 위배됩니다. 그러나 InnoDB는 현재 지연된 제약 조건 검사를 지원하지 않습니다.
데이터 조작에 대한 영향
참조 무결성 검사를 즉시 시행하면 관련 데이터를 삽입하거나 수정할 때 문제가 발생할 수 있습니다. . 예를 들어, 다른 테이블의 상위 레코드를 참조하는 테이블에 하위 레코드를 삽입하려고 하면 MySQL은 즉시 외래 키 검사를 수행합니다. 상위 레코드가 아직 존재하지 않거나 삭제된 경우 삽입 작업이 실패합니다.
지연 검사의 대안
MySQL은 실제 지연 제약 검사를 지원하지 않습니다. , 그 효과를 시뮬레이션할 수 있는 해결 방법이 있습니다:
이러한 대안은 지연 제약 조건 검사 동작을 완전히 복제하지 않는다는 점에 유의하는 것이 중요합니다. 데이터 무결성을 보장하기 위해 추가적인 수동 개입이나 코드 수정이 필요할 수도 있습니다.
위 내용은 MySQL에서 참조 무결성 검사를 연기할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!