LOCK schema table IN lock_mode |
LOCK TABLE intentory IN EXCLUSIVE MODE |
事务控制
事务控制包括协调对相同数据的多个同步的访问。当一个用户改变了另一个用户正在使用的数据时,oracle使用事务控制谁可以操作数据。
事务
事务表示工作的一个基本单元,是一系列作为一个单元被成功或不成功操作的SQL语句。在SQL和PL/SQL中有很多语句让程序员控制事务。程序员可以:
1、显式开始一个事物,选择语句级一致性或事务级一致性
2、设置撤销回滚点,并回滚到回滚点
3、完成事务永远改变数据或者放弃修改。
事务控制语句
语句 | 用途 |
Commit | 完成事务,数据修改成功并对其他用户开放 |
Rollback | 撤销事务,撤销所有操作 |
rollback to savepoint | 撤销在设置的回滚点以后的操作 |
set transaction | 响应事务或语句的一致性;特别对于事务使用回滚段 |
BEGIN UPDATE checking SET balance=balance-5000 WHERE account=''Kieesha''; INSERT INTO checking_log(action_date,action,amount) VALUES (SYSDATE,''Transfer to brokerage'',-5000); UPDATE brokerage SET cash_balance=cash_balance+5000 WHERE account=''Kiesha''; INSERT INTO brokerage_log(action_date,action,amount) VALUES (SYSDATE,''Tracfer from checking'',5000) COMMIT EXCEPTION WHEN OTHERS ROLLBACK END |
BEGIN INSERT INTO ATM_LOG(who,when,what,where) VALUES (''Kiesha'',SYSDATE,''Withdrawal of $100'',''ATM54'') SAVEPOINT ATM_LOGGED; UPDATE checking SET balance=balance-100 RETURN balance INTO new_balance; IF new_balance<0 THEN ROLLBACK TO ATM_LOGGED; COMMIT RAISE insufficient_funda; END IF END |
ROLLBACK TO ATM_LOGGED; ROLLBACK TO SAVEPOINT ATM_LOGGED; |