대상 테이블에 삽입하기 전에 데이터를 받아 들여 스크럽하고 정리하는 스테이징 테이블 집합이 있습니다. 대상 테이블에는 기본 키 제약 조건이 있으며 삽입 대상은 기본 키입니다.잘라 내기/삭제로 인한 SQL Server 기본 키 위반?
삽입하기 전에 대상 테이블에 기본 키가 없는지 확인합니다. 나는 기본 키의 부재에 따라, 대상 테이블에없는 경우에만 레코드를 삽입 :
:INSERT INTO Target
SELECT
primKey
, user_state
, test_state
FROM
myStagingTable3
이 점에 의해, stagingTable3는 다음 where 절을 사용하여 목표 테이블에 존재하지 않는 경우에만 데이터가
WHERE
primKey not in (Select primKey from Target)
어떻게 든, 나는 기본 키 위반 오류를 받고 있어요 :
메시지 2627, 수준 14, 상태 1 (절차는 ... 라인 번호에 실패) 기본 키 형 구조 위반 raint 'pk1101AE'. 내가 삽입 할 키가 대상 테이블에 존재하지 않을 때 조건이 기본 키 위반이 발생할 수 있는지에 따라
- : 대상 '대상'
내 질문에 중복 키를 삽입 할 수 없습니다 ?
내 스테이징 테이블에 키가 있고 타겟 테이블에없는 것이 분명합니다. 그러나 삽입이 실패합니다.
내가 그 I를 추가해야 이 게시물을 읽으십시오 : http://stackoverflow.com/questions/5278588/violation-of-primary-key-constraint-sql-error 그리고 delete/truncate 문제는 흥미 롭습니다. 그 문제를 해결하는 방법을 모른다. 이것에 멍청한 놈. 감사. – user991945
스테이징 테이블에는'primKey'의 값이 여러 개있을 가능성이 큽니다. – dasblinkenlight
흠, 그냥 확인해 봤는데 ... 사실입니다 ... primKey의 값이 여러 개 있습니다. 그리고 그것은 SECOND 키 값이 오류를 일으키는 원인이된다는 것을 의미합니다. 따라서 모든 것이 배제되고 트랜잭션이 롤백됩니다. 나는 중복 된 것들을 제거 할 수 없다면 여기서 병합 성명서를 볼 것입니다. 그렇게하면 삽입 후에도 업데이트 할 수 있습니다. 항상 간단한 것을 확인하십시오. – user991945