**** 출처 URL*****
http://infodbbase.tistory.com/29
1. Transaction이란
하나의 논리적 작업 단위로 수행되는 일련의 작업을 뜻한다.
Transaction은 ACID속성을 가져야 한다.
· 원자성(Atomicity)은 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력이다. 즉 트랜잭션은 모든 작업이 수행되거나 혹은 하나도 수행되지 않아야 한다.
· 일관성(Consistency)은 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것을 의미한다. (DATA의 무결성 유지)
· 고립성(Isolation)은 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것을 의미한다
· 지속성(Durability)은 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함을 의미한다.
2. SP내부에 트랜잭션 적용
1) 예제1
CREATE PROCEDURE testSP @num int AS BEGIN TRAN UPDATE testSP SET num=@num IF @@ERROR <>0 BEGIN SELECT @@ERROR ROLLBACK’; END COMMIT GO |
à SP에서 보면 트랜잭션 내부에 UPDATE문이 있고,
UPDATE구문 실행도중 ERROR가 발생하면 @@ERROR반환 후, 롤백을 하고
정상적으로 수행되었다면 UPDATE 끝나고 COMMIT을 하게 됩니다.
2) 예제2
CREATE PROCEDURE testSP @num int AS DECLARE @err int SET @err=0; BEGIN TRAN UPDATE testSP SET num=@num SET @err=@@ERROR IF @err <>0 BEGIN ROLLBACK; RETURN; END INSERT INTO testable(num) VALUES(@num) SET @err=@@ERROR IF @err <>0 BEGIN ROLLBACK; RETURN; END COMMIT GO |
à 트랜잭션 내부에 UPDATE, INSERT문이 삽입되어 있는 상태로
UPDATE문이 제대로 실행 시 INSERT문까지 실행되지만,
UPDATE문 안에서 에러가 발생한다면 ROLLBACK하고 SP를 중단하고,
INSERT문 안에서 에러가 발생해도 INSERT,UPDATE 모두 중단하고 SP를 빠져나오게된다. è 원자성 의미! (트랜잭션은 모든 작업이 수행되거나 혹은 하나도 수행되지 않아야 한다.)
2. 프로시저 삭제
DROP PROCEDURE <프로시저 명>;
GO
'Database > MSSQL' 카테고리의 다른 글
ORACLE/MSSQL 차이점 (0) | 2016.05.19 |
---|---|
procedure (0) | 2016.05.18 |