당연한 결과라고 생각됩니다.
transaction 이 걸리고, 작업을 진행하다가 에러가 나면 전체 작업이 다 roll/back 되겠지요. 만약 이렇게 되지 않는다면 transaction 자체가 의미가 없는 것이겠지요.
하나하나의 query 를 따로 실행시키는 수 밖에 없을 것 같습니다. 독립된 transaction 으로서....
>>어떤생각 님께서 쓰시길<<
:: 에구 큰일이네여.
::
:: 일단 문제는 만일 쿼리문을 ; 로 이어서 쓰는 경우에, 즉
:: "insert into table_a (a,b) VALUES ('a','b'); insert into table_a (a,b) VALUES ('c','d');"
::
:: 이런 쿼리문을 실행시킬 때요, 만일 a 필드는 unique하다고 가정하고 이미 테이블에 'a'라는 값이 들
:: 어 있다고 하면요...
::
:: 이걸 콘솔에서 실행하면
:: ERROR: Cannot insert a duplicate key into unique index .....
:: insert 426817 1
:: 이렇게 나오죠. 즉 하나는 insert에 성공하고 하나는 중복되는 값이 있어서 insert가 안됬다. 이런 건
:: 데요...
::
:: 이걸 ODBC에서 실행하면 트랜잭션이 걸립니다. 즉 하나가 실패했으니 모두 roll/back이져.
::
:: 사실 전 이걸 메일링리스트에 쓰는데요 중복되는 사람이 있으면 입력되지 않도록 하려고 unique로 걸
:: 어놨거든요. 그럼 중복이 되던지 말던지 신경쓸 필요가 없는건데...
:: 이걸 ODBC로 돌렸더니 하나라도 중복되는 값이 있으면 모든 row가 다 들어가질 않는군요. 에구에구.
::
:: 혹시 이걸 해결할 수 있는 방법이 있을까요?
:: 흠... 그러니까 ODBC에서 여러문장을 한번에 실행시키면서 트랜잭션이 걸리지 않게 하는 방법요.
::
:: 아시는 분은 좀 부탁드리겠읍니다. 감사합니다.
|