문제:
다음과 같은 테이블이 제공됩니다. 날짜 범위 가용성(avail)에 대한 작업은 지정된 계정 ID(acc_id)에 대한 기존 날짜 범위와 겹치지 않는 경우에만 새 날짜 범위를 테이블에 삽입하는 것입니다.
제안된 솔루션 단일 Insert 문 사용:
단일 insert 문으로 이 작업을 수행하고 싶지만 안타깝게도 MySQL만으로는 직접적으로 가능하지 않습니다.
대안 접근 방식:
SQL CHECK 제약 조건(MySQL에서는 지원되지 않음):
SQL CHECK 제약 조건은 이러한 중복을 적용하는 데 선호되는 방법입니다. 확인. 그러나 MySQL은 CHECK 제약 조건을 지원하지 않습니다.
PostgreSQL CHECK 제약 조건:
PostgreSQL은 테이블에 대한 CHECK 제약 조건을 지원합니다. PostgreSQL로 전환하는 것이 가능한 옵션인 경우 이 접근 방식을 고려할 수 있습니다.
MySQL 트리거:
MySQL 트리거를 사용하여 다음을 확인할 수 있습니다. 삽입 또는 업데이트 작업 전에 겹칩니다. 그러나 이를 위해서는 최신 MySQL 버전이 필요합니다.
애플리케이션 로직:
일반적으로 중복 검증은 애플리케이션 로직에서 수행됩니다. SELECT COUNT(id) ... 문을 사용하여 새 항목을 위반하는 행을 확인할 수 있습니다. 개수가 0보다 크면 삽입 또는 업데이트가 중단됩니다.
추가 고려 사항:
결론:
MySQL에서는 단일 삽입 문이 가능하지 않을 수 있지만 PostgreSQL CHECK 제약 조건, MySQL 트리거 또는 애플리케이션 로직과 같은 대체 접근 방식을 사용하면 안정적인 중첩 검증을 제공할 수 있습니다.
위 내용은 다음은 질문을 통합하고 핵심 문제에 초점을 맞춘 몇 가지 제목입니다. * 중복 없이 MySQL에 날짜 범위를 삽입하는 방법은 무엇입니까? * MySQL 날짜 범위 삽입: 중복 방지 - 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!