[sql] MERGE, TRANSACTION

sesame·2021년 8월 24일
0

sql

목록 보기
10/24

MERGE

MERGE [ hint ]
  INTO [ schema. ] { table | view } [ t_alias ] -- INSERT되거나 UPDATE될 t/v
  USING { [ schema. ] { table | view } --비교할 t/v
  	| subquery
	} [ t_alias ]
	ON (조건) --INSERT되거나 UPDATE될 조건
----------------------------------------------
WHEN MATCHED THEN --조건을 만족하면/UPDATE, DELETE가능
UPDATE SET column = { 값1 | DEFAULT }
		[, column = { 값2 | DEFAULT } ]...
[ DELETE where_clause ]
----------------------------------------------
WHEN NOT MATCHED THEN --조건을 만족하지 않으면/INSERT
INSERT [ (column [, column ]...) ]
VALUES ({ 값1 [,2 ]... | DEFAULT })


TRANSACTION

트랜잭션은 DB내에서 하나의 그룹으로 처리되어야하는 명령문들을 모아놓은 논리적인 작업단위이다.

DML 문장은 COMMIT을 안하면 실제로 적용이 안된다!!!!!!

🚨 꼭 COMMIT이 되어야 적용되는가요??
아니! DDL, DCL 이 실행되는 경우 자동커밋이 되기 때문에 적용된다

🌠트랜잭션 시작

DML 실행될 때

🌠트랜잭션 종료

COMMIT 이나 ROLLBACK 수행
DDL이나 DCL 문장 실행
기계장애 또는 시스템 충돌시
deadlock 발생
사용자의 정상 종료

🌈자동 COMMIT 발생 상황

DDL, DCL 문장의 완료
SQL*Plus 정상 종료

🌈자동 ROLLBACK 발생 상황

SQL*Plus 비정상 종료
시스템의 비정상적인 종료

AUTOCOMMIT

--현재 오토커밋 상태 확인
SHOW AUTOCOMMIT;

-- 오토커밋 ON으로 세팅
SET AUTOCOMMIT ON;

🚨 오토커밋 모드가 OFF더라도 DML 실행후 DDL, DCL 싱행되면 자동 커밋된다.
자동커밋된 이후 ROLLBACK은 실행불가하다.

SAVEPOINT / ROLLBACK TO

SAVEPOINT: 트랜잭션 작업을 사용자가 세그먼트로 분할하여, 부분적인 ROLLBACK을 가능하게함
ROLLBACK TO: 여러개의 SAVEPOINT 중 특정지점으로 돌아감

INSERT INTO 테이블명(컬럼1, 컬럼2)
VALUES (1,2)

SAVEPOINT A;

SAVEPOINT
INSERT INTO 테이블명(컬럼1, 컬럼2)
VALUES (1,2)

SAVEPOINT B;

ROLLBACK TO A;

0개의 댓글