database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 5515 게시물 읽기
No. 5515
저장프로시저에서의 트랜잭션 처리
작성자
한동
작성일
2009-12-29 10:33
조회수
8,219

하나의 저장프로시저에 여러개의 업데이트 문과 인서트문이 있습니다.

예를 들어서

create proc testInsert
as
begin tran

 insert ......1
 insert ......2

 update ......3
 update ......4

 insert ......5

if @@error > 0
 rollback tran
else
commit tran
 

이렇게 프로시저를 만들었습니다.

그런데, 4번에서 만약 에러가 났다면 1,2번의 인서트문과 3번의 업데이트문이 롤백이 되야 되는거 아닌가요?

4번에서 에러가 나도 3번까지는 실행이 되버려서 트랜잭션의 의미가 없어져 버립니다.

작성문이 잘 못 된건가요?

프로시저내 트랜잭션처리에 대해서 답변 좀 부탁드리겠습니다.

이 글에 대한 댓글이 총 1건 있습니다.

@@error 함수로 반환되는 값은 각 쿼리문이 실행될때마다 다시 설정됩니다.

따라서 위의 sp에서는 5번의 insert의 성공 여부만을 판단하게 됩니다.

각 입력/수정 구문마다 롤백을 해주시거나 2005 이상이시면 try catch를 써주세요

박형범(dreamwind)님이 2009-12-29 23:47에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
5518MS SQL 2005 -> 2000 링크드서버 관련
장세덕
2009-12-31
6343
5517MS-SQL2008 -> MS-SQL2005로 데이터 이전시 [3]
호호아줌마
2009-12-31
6970
5516커서에서 2중 WHILE 조건절 사용시 [1]
청년재벌
2009-12-30
6846
5515저장프로시저에서의 트랜잭션 처리 [1]
한동
2009-12-29
8219
5513mysql -> mssql 변경시..
초보자
2009-12-24
5908
5512프로시져 안에 동적 쿼리를 생성하는데...돠주십시오 굽신굽신;;
김민호
2009-12-24
7399
5511bulk insert 오류 관련 [1]
김샛별
2009-12-23
9860
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.032초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다