SQL/MS-SQL & SQL Server Management Studio

[MSSQL] BEGIN TRAN 사용하기

삐뚤어진 개발자 2019. 11. 27.

데이터를 임의로 지우거나 삭제할 때, 실수 할수 있기때문에 트랜잭션을 걸어 주고

 

데이터가 맞는지 조회해보고 맞다면, COMMIT 틀리다면, ROLLBACK을 실행해주면 된다.

 

EX)

1. PEOPLE 이라는 테이블에 이름, 나이 컬럼들이 있다고 가정하자.

SELECT * FROM PEOPLE
  이름 나이
1 링고비 26
2 데헤스티니 24

 

2. 이름이 링고비인 데이터의 나이를 20으로 바꾸고 싶다.

UPDATE PEOPLE SET 나이 = 20

하지만 깜빡하고 WHERE 절을 작성하지 않았다면.. 데헤스티니의 나이까지 20으로 바뀐다.

 

이런 실수를 방지 하기 위해, BEGIN TRAN을 건다.

 

 

3. BEGIN TRAN을 걸고 UPDATE문을 실행한 후 PEOPLE 테이블을 조회하면,

BEGIN TRAN

UPDATE PEOPLE SET 나이 = 20

SELECT * FROM PEOPLE

 

  이름 나이
1 링고비 20
2 데헤스티니 20

데헤스티니의 나이까지 바뀌었다. 데이터가 생각대로 바뀌지 않았으니

ROLLBACK을 실행하여 트랜잭션을 실행한 전으로 돌아간다.

 

ROLLBACK;

4. 마찬가지로 트랜잭션을 걸고 쿼리를 수정한다. (WHERE절이 누락되었었다. )

BEGIN TRAN

UPDATE PEOPLE SET 나이 = 20
WHERE 이름 ='링고비'

SELECT * FROM PEOPLE
  이름 나이
1 링고비 20
2 데헤스티니 24

다시 조회해보면 링고비의 나이만 변한것을 볼수 있다.

작성한 쿼리가 맞다고 판단된다면, COMMIT으로 트랜잭션 커밋을 해준다.

 

COMMIT;

 

끝.

댓글