0
임의적으로 발생하는 이상한 동작이 나타납니다. 내 스토어 절차는 기본적으로 다음과 같습니다. 코드 위의 대부분의 시간을 위해Sql 트랜잭션이 전체 롤백을 수행하지 않습니다.
begin try
begin tran
insert into table1
update table2
insert into table3
commit tran
end try
begin catch
rollback tran
end catch
은 가끔 (하루에 한 번 또는 두) 일부 오류가 발생하면, 트랜잭션이 3 개 테이블에서 변경 사항을 롤백하지 않습니다를 제외하고 잘 작동합니다.
begin try
begin tran
insert into table1----Rollback doesn't happen
update table2--Rollback happens
insert into table3--Rollback happens
commit tran
end try
begin catch
rollback tran
end catch
누군가 내가 잘못 생각한 부분을 제안하거나 다른 방법으로 거래를 처리해야합니까?
미리 감사드립니다.
입니다이 불가능를 확인합니다. 분석이 틀렸어 야합니다. 트랜잭션이 부분적으로 롤백되는 유일한 방법은 의도적으로 세이브 포인트로 롤백하는 경우입니다. –
설명하는 방식으로 롤백이 일어나지 않았 음을 어떻게 결정 했습니까? 어떤 정보/로그 등이 문제라고 지적하셨습니까? –
당신은'update table2'와'insert into table3' 롤백이 발생한다고 말했죠. 그것은 반드시 사실이 아닙니다. 'insert into table1'에서 에러가 발생하면 즉시 catch 블록으로 건너 뜁니다. 따라서 "롤백 발생"이 아니라 오히려 "결코 수행되지 않는 작동"이 아닙니다. –