[MSSQL] Update문 사용법 & 예제(트랜잭션)
- DB/MSSQL
- 2018. 1. 29.
데이터베이스 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(테이블 생성, 수정, 삭제)
'DB > MSSQL' 카테고리의 다른 글
[MSSQL] 별칭(ALIAS) 사용법 & 예제 (0) | 2018.02.06 |
---|---|
[MSSQL] Delete문 사용법 & 예제(트랜잭션) (0) | 2018.01.29 |
[MSSQL] Select문 사용법 & 예제 (0) | 2018.01.29 |
[MSSQL] Insert문 사용법 & 예제 (0) | 2018.01.29 |