Oracle Transaction Statements
Oracle Transaction Statements
A transaction is a series of one or more SQL statements that Oracle Database treats as a unit.
A transaction is an atomic unit. A transaction ends when it is committed or rolled back.
The transaction control statements are:
SAVEPOINT – is a point in a transaction to which you can later roll back.
A transaction can have multiple savepoints. Savepoints are optional.
Oracle Database rolls back only the statements run after the savepoint.
COMMIT – ends the current transaction, makes its changes permanent, erases its savepoints, and releases its locks.
ROLLBACK – rolls back either the entire current transaction or only the changes made after the specified savepoint.
Rollback to Savepoint
declare v_name varchar2(255); begin update CUSTOMERS set name = 'Customer_A' where id=1 AND name='Customer_Abc'; DBMS_OUTPUT.put_line('upd_1: '||SQL%ROWCOUNT); SAVEPOINT update_1; Insert into CUSTOMERS (ID,NAME,ADDRESS) values (4,'Customer_D','Address 4D'); DBMS_OUTPUT.put_line('upd_2: '||SQL%ROWCOUNT); SAVEPOINT update_2; select name into v_name from CUSTOMERS where id=5; COMMIT; exception when no_data_found then DBMS_OUTPUT.put_line('ROLLBACK TO SAVEPOINT update_1'); ROLLBACK TO SAVEPOINT update_1; end;
Rollback
declare v_name varchar2(255); begin update CUSTOMERS set name = 'Customer_A' where id=1 AND name='Customer_Abc'; DBMS_OUTPUT.put_line('upd_1: '||SQL%ROWCOUNT); Insert into CUSTOMERS (ID,NAME,ADDRESS) values (4,'Customer_D','Address 4D'); DBMS_OUTPUT.put_line('upd_2: '||SQL%ROWCOUNT); select name into v_name from CUSTOMERS where id=5; COMMIT; exception when no_data_found then DBMS_OUTPUT.put_line('ROLLBACK'); ROLLBACK ; end;
Commit
declare v_name varchar2(255); begin Insert into CUSTOMERS (ID,NAME,ADDRESS) values (4,'Customer_D','Address 4D'); DBMS_OUTPUT.put_line('upd_2: '||SQL%ROWCOUNT); select name into v_name from CUSTOMERS where id=4; DBMS_OUTPUT.put_line('Customer name: '||v_name); COMMIT; end;