논리적 오류시 TRANSACTION 처리방법

Hyuntae Jung·2022년 7월 29일
0
post-thumbnail

1. TRANSACTION

CREATE TABLE TRAN_ex2(
	name VARCHAR(10),
	money INT,

	CONSTRAINT CK_money CHECK (money >=0)
);

INSERT TRAN_ex2 VALUES('유비', 1000);
INSERT TRAN_ex2 VALUES('장비', 2000);

select * from TRAN_ex2;
--유비가 장비에게 500원을 송금을 했을 때 처리
--BEGIN TRAN
	UPDATE TRAN_ex2 set money = money - 500 where name='유비';
--COMMIT TRAN

--BEGIN TRAN
	UPDATE TRAN_ex2 set money = money + 500 where name = '장비';
--COMMIT TRAN

BEGIN TRANCOMMIT TRAN 과정이 수행되었다.

2. TRAN의 논리적 오류처리

2.1. 논리적 오류

BEGIN TRAN
	UPDATE TRAN_ex2 set money = money - 800 where name='유비';
	UPDATE TRAN_ex2 set money = money - 800 where name = '장비';
COMMIT TRAN

유비가 800원을 갖고 있지않아 -800처리가 안되고 있다.

2.2. TRY, CHECK를 활용한 예외처리

BEGIN TRY
	BEGIN TRAN
		UPDATE TRAN_ex2 SET money = money - 500 WHERE name='유비';
		UPDATE TRAN_ex2 SET money = money +500 WHERE name = '장비';
	COMMIT TRAN
	PRINT '장비 계좌에 입급 처리가 되었습니다..!!!'
END TRY

BEGIN CATCH
	ROLLBACK TRAN
	PRINT '잔액이 부족합니다...!!!!'
END CATCH

위와 같은 상태일때 해당 TRAN을 실행할 시 아래와 같이 출력된다.

강의: ms sql 2014 제대로 배우기 2

0개의 댓글