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 })
트랜잭션은 DB내에서 하나의 그룹으로 처리되어야하는 명령문들을 모아놓은 논리적인 작업단위이다.
DML 문장은 COMMIT을 안하면 실제로 적용이 안된다!!!!!!
🚨 꼭 COMMIT이 되어야 적용되는가요??
아니! DDL, DCL 이 실행되는 경우 자동커밋이 되기 때문에 적용된다
DML 실행될 때
COMMIT 이나 ROLLBACK 수행
DDL이나 DCL 문장 실행
기계장애 또는 시스템 충돌시
deadlock 발생
사용자의 정상 종료
DDL, DCL 문장의 완료
SQL*Plus 정상 종료
SQL*Plus 비정상 종료
시스템의 비정상적인 종료
--현재 오토커밋 상태 확인
SHOW AUTOCOMMIT;
-- 오토커밋 ON으로 세팅
SET AUTOCOMMIT ON;
🚨 오토커밋 모드가 OFF더라도 DML 실행후 DDL, DCL 싱행되면 자동 커밋된다.
자동커밋된 이후 ROLLBACK은 실행불가하다.
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;