[sql] MERGE, TRANSACTION
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
トランザクションは、データベース内でグループとして処理する必要がある文を集約する論理ワークユニットです.
DML文はCOMMITを使わないと実用化できません!!!
🚨 必ずCOMMITになってから適用されますか?
いいえ.DDL、DCL運転時に自動的に発行されるので適用
🌠取引の開始
DML運転時
🌠取引の終了
COMMITまたはROLLBACKの実行
DDLまたはDCL文の実行
機械が故障したりシステムがクラッシュした場合
デッドロック発生
ユーザーが正常に終了
🌈自動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;
Reference
この問題について([sql] MERGE, TRANSACTION), 我々は、より多くの情報をここで見つけました https://velog.io/@kyy806/MERGE-TRANSACTIONテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol