행 무결성 유지: 중복 검사로 데이터 복사
동일한 스키마를 사용하는 두 테이블 간에 데이터를 복제하는 작업에 직면했을 때 데이터를 보장합니다. 무결성이 가장 중요해집니다. 중복을 무시하면서 한 테이블에서 다른 테이블로 행을 복사하려고 할 때 한 가지 일반적인 문제가 발생합니다. 이 문제를 해결하기 위한 솔루션을 자세히 살펴보겠습니다.
처음에 제안된 솔루션은 하위 쿼리와 함께 WHERE 절을 사용하여 중복 행을 필터링하는 것이었습니다.
INSERT INTO destTable SELECT * FROM srcTable WHERE NOT EXISTS(SELECT * FROM destTable)
그러나 이 접근 방식은 실패했습니다. 중복을 구성하는 요소를 정의하는 기준을 통합합니다. 이 문제를 해결하려면 하위 쿼리 내에 일치 기준을 지정하는 추가 WHERE 절이 필요합니다.
WHERE NOT EXISTS(SELECT * FROM destTable WHERE (srcTable.Field1=destTable.Field1 and SrcTable.Field2=DestTable.Field2...etc.)
또는 외부 조인이 더 간결한 솔루션을 제공합니다.
INSERT INTO destTable SELECT s.field1,s.field2,s.field3,... FROM srcTable s LEFT JOIN destTable d ON (d.Key1 = s.Key1 AND d.Key2 = s.Key2 AND...) WHERE d.Key1 IS NULL
이것은 접근 방식은 지정된 조인을 기반으로 대상 테이블에 일치하는 행이 없는 원본 테이블의 행을 식별하고 삽입합니다. 키.
게다가 소스 테이블 자체 내에서 잠재적인 중복 행이 우려되는 경우 고유한 문을 사용할 수 있습니다.
INSERT INTO destTable SELECT Distinct field1,field2,field3,... FROM srcTable
마지막으로 특정 필드 이름을 SELECT *를 사용하는 대신 문을 삽입하여 의도한 필드만 복사되도록 합니다.
위 내용은 중복 검사를 사용하여 테이블 간에 데이터를 복사할 때 행 무결성을 유지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!