트랜잭션 내부에서 저장 프로 시저 (sp_update_queue
)의 업데이트 T-SQL을 래핑해야하는 경우가 있습니다. 하지만 두 스레드가 동일한 연결을 사용하지만 다른 쿼리를 실행하고 시작한 트랜잭션을 롤백하는 경우 어떤 일이 발생하는지 궁금합니다. T-SQL 저장 프로 시저 트랜잭션 동시성
QUEUED_TASKS
을 업데이트
sp_update_queue
라고하지만
sp_update_queue
이/롤백을 커밋하기 전에 트랜잭션 ThreadB는 다른 업데이 트를 실행하거나 다른 테이블에 SQL 삽입,
CUSTOMERS
을 말한다. 그런 다음 ThreadB가 끝나면
sp_update_queue
에 오류가 발생하여 롤백을 호출합니다.
둘 다 동일한 연결을 사용하기 때문에 롤백은 ThreadB가 트랜잭션 내에서 변경을했는지 여부에 관계없이 ThreadB?가 변경 한 내용을 롤백합니다.
사이드 참고 : ** ** 당신의 저장 프로 시저의'sp_' 접두사를 사용하지 말아야합니다. Microsoft는 [자체 저장을 위해이 접두어를 예약했습니다 (* 저장 프로 시저 명명 * 참조)] (http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx) 및 당신은 미래에 언젠가 이름 충돌의 위험을 감수해야합니다. [저장 프로 시저 성능에 좋지 않습니다.] (http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix). 'sp_'를 피하고 다른 것을 접두어로 사용하는 것이 가장 좋습니다. –
각각의 "스레드"에서'select @@ spid '. –
"... 둘 다 같은 연결을 사용하고 있습니다 ..."라고 말할 때 무슨 뜻인지 분명히 할 수 있습니까? –