2017-12-14 22 views
0

테이블을 반복하고 다른 테이블에 값을 삽입해야하는 스크립트를 작성하고 있습니다.트랜잭션 강제 실행

문제는 새 테이블에 데이터를 삽입하기 전에 데이터를 연결할 때 일부 중복 값이 ​​발생한다는 것입니다.

나는 while 루프에서이 작업을 수행하고 있으며 SQLServer가 메모리에 모든 insert 문을 작성하고 스크립트가 완료되면 실행하는 것처럼 보입니다.

내가 올바른 느낌을 받았는지, 그렇다면 SQLServer가 코드에서 발생할 때 개별 트랜잭션을 개별적으로 수행하도록하는 방법이 있습니까?

+3

SQL Server는 일반적으로 사용자가 트랜잭션 내부에 있지 않는 한 모든'insert' 문 다음에 커밋합니다. –

+1

왜 루프를 사용하여 데이터를 삽입하고 있습니까? 당신이하는 일은 마치 하나의 insert 문이어야하는 것과 같은 소리입니다. 코드를 공유 할 수 있습니까? –

+0

나는 while 루프 안에 있다고 가정하거나 문장이 트랜잭션으로 간주되지 않는다면 내 코드 (논리)가 문제가되는 것을 의미합니까? 코드를 공유하지 않고 문제를 직접 해결하고 문제의 원인을 조사하고 조명 과정을 살펴 보겠습니다. –

답변

0

일반적으로 (항상 그런 것은 아니지만) 중복 레코드를 받으면 논리에 문제가 있습니다. 즉, 중복을 제거하려면을 선택하십시오.

Insert into tablec (a, b, c) 
select distinct tablea.a, tablea.b, tableb.c 
    from tablea 
left outer join tableb on tablea.a = tableb.b