TCL(Transaction Control Language)

[ 트랜젝션이란? ]

COMMIT

ROLLBACK

SAVEPOINT 세이브포인트명

ROLLBACK TO 세이브포인트명

CREATE TABLE USER_TBL(
  USERNO NUMBER UNIQUE
, ID VARCHAR2(20) PRIMARY KEY
, PASSWORD CHAR(20) NOT NULL
);

INSERT
  INTO USER_TBL
(
  USERNO, ID, PASSWORD
)
VALUES
( 
  1, 'test1', 'pass1'
);

INSERT
  INTO USER_TBL
(
  USERNO, ID, PASSWORD
)
VALUES
( 
  2, 'test2', 'pass2'
);

INSERT
  INTO USER_TBL
(
  USERNO, ID, PASSWORD
)
VALUES
( 
  3, 'test3', 'pass3'
);

SELECT * FROM USER_TBL;
ROLLBACK; --> 삽입한 3개의 행이 전부 삭제됨(트랜잭션 단위 되돌리기)
COMMIT; --> 삽입한 3개의 행을 저장 (트랜잭션 단위 저장)

INSERT
  INTO USER_TBL
(
  USERNO, ID, PASSWORD
)
VALUES
( 
  4, 'test4', 'pass4'
);

SAVEPOINT SP1;  --> 저장 시점 지정

INSERT
  INTO USER_TBL
(
  USERNO, ID, PASSWORD
)
VALUES
( 
  5, 'test5', 'pass5'
);

ROLLBACK TO SP1;  --> 세이브 포인터를 실행했던 시점으로 되돌림