[MSSQL] Update문 사용법 & 예제(트랜잭션)

데이터베이스 MS_SQL Update문 사용법 및 예제입니다. Update문은 굉장히 위험한 명령어이므로 꼭 트랜잭션 안에서만 사용해주셔야 합니다. 특히 Update문구에 실수로 Where 절을 쓰지 않고 실행을 하게 되면 테이블에 있는 칼럼 모두가 바뀌게 되는데 이런 큰 실수를 하게 되면 되돌릴 수도 없고 바로 사직서를 써야 하는 상황이 연출됩니다...... ㅠㅠㅠ 그러므로 먼저 Update에 하기 앞서서 Select문으로 자신이 바꿔야 할 데이터를 조회한 뒤 꼭 트랜잭션 안에서 Update문을 실행해주도록 합시다. 

 

트랜잭션이란? 

하나의 처리를 여러 단계로 다루는 기능을 트랜잭션(Transaction)이라고 합니다. 하나의 처리를 Commit이라는 명령어를 수행하기전 마지막으로 한번 더 확인할 수 있는 기회를 줌으로써 좀 더 안정적인 데이터베이스 작업을 가능하게 합니다. 트랜잭션의 실행결과를 데이터베이스에 반영하는 것을(Commit)이라고 하고 반영하기 전으로 되돌리는 것을 롤백(RollBack)이라고 합니다. 

BEGIN TRAN--트랜잭션 시작

ROLLBACK TRAN --트랜잭션 이전상태로 ROLL BACK

COMMIT TRAN --트랜잭션 완료 

 

 Update문 사용법 & 예제(트랜잭션) 

Update(문법)

UPDATE 테이블명 SET 칼럼명 = '내용'

UPDATE 테이블명 SET 칼럼명 = '내용' WHERE 조건문

 

트랜잭션 + Update

--문법
SELECT * FROM 테이블명 WHERE 칼럼명 = '내용' --칼럼의 존재 확인

BEGIN TRAN --트랜잭션 시작
UPDATE 테이블명 SET Update할칼럼 = '바꿀문구' WHERE 칼럼명 ='기존문구' --홍길동을 이순신으로 바꿈
SELECT * FROM 테이블명 WHERE 칼럼명 = '바뀐문구'--나만 바뀐것을 확인할수 있고 아직 적용은 안되어있는 상태이다.
ROLLBACK TRAN -되돌리기 --Update 취소
COMMIT TRAN --트랜잭션 완료 --Update 적용
-----------------------------------------------------------------------------------------------------------
--Example
SELECT * FROM My_Table WHERE Nm_Kor = '홍길동' --홍길동 칼럼의 존재 확인

BEGIN TRAN --트랜잭션 시작
UPDATE My_Table SET Nm_Kor = '이순신' WHERE Nm_Kor ='홍길동' --홍길동을 이순신으로 바꿈
SELECT * FROM My_Table WHERE NM_KOR = '이순신'--나만 바뀐것을 확인할수 있고 아직 적용은 안되어있는 상태이다.
ROLLBACK TRAN -되돌리기
COMMIT TRAN --트랜잭션 완료

 

예제(Example) 

1. My_Table에서 회사코드(COMPANY)가 '0327'이고 날짜(DT)가 2017년인 데이터를 '20190101로 수정

SELECT * FROM My_Table WHERE COMPANY='0327' AND DT LIKE '2017%' --Update할 데이터 조회

BEGIN TRAN -- 트랜잭션 시작
UPDATE My_Table SET DT= '20190101'  WHERE CD_COMPANY ='0327' AND DT LIKE '2017%' --Update수행
SELECT * FROM My_Table WHERE COMPANY ='0327' AND DT LIKE '2019%' --바뀐 데이터 확인
COMMIT TRAN -- 트랜잭션 반영

 

2. My_Table에서 품목코드(ITEM)가 '400596'인 데이터에 수량(QT)을 10개로 수정

SELECT * FROM My_Table WHERE ITEM = '400596'

BEGIN TRAN
UPDATE My_Table SET QT = 10 WHERE ITEM = '400596'
SELECT * FROM My_Table WHERE ITEM = '400596'
COMMIT TRAN

 

3. My_Table에서 데이터에 회사코드(COMPANY) ='0327인 칼럼을 공급금액(AM)은 수량(QT)*단가(UM)로 재계산

SELECT * FROM My_Table WHERE COMPANY = '0327'

BEGIN TRAN
UPDATE My_Table SET AM = QT * UM WHERE COMPANY = '0327'
SELECT * FROM My_Table WHERE COMPANY = '0327'
COMMIT TRAN

 

4. My_Table에서 회사코드(COMPANY)='0327'인 칼럼을 날짜(DTS)는 '시스템일자' 이고 데이터에 부가세(VAT)는 공급금액(AM)의 10%로 재계산

SELECT * FROM My_Table WHERE COMPANY ='0327'

BEGIN TRAN
UPDATE My_Table SET VAT = AM * 0.1 , DTS=NEOE.SF_SYSDATE(GETDATE()) WHERE CD_COMPANY ='0327' 
SELECT * FROM My_Table WHERE COMPANY ='0327'
COMMIT TRAN

 

[MS_SQL] Create Table, Alter Table, Drop Table(테이블 생성, 수정, 삭제)

[MS_SQL] Insert문 사용법 & 예제

[MS_SQL] Select문 사용법 & 예제

[MS_SQL] Delete문 사용법 & 예제(트랜잭션)

[MS_SQL] 별칭(ALIAS) 사용법 & 예제

 

댓글

Designed by JB FACTORY