ITPub博客

首页 > 数据库 > Oracle > PLSQL Language Referenc-PL/SQL静态SQL-事务处理和控制

PLSQL Language Referenc-PL/SQL静态SQL-事务处理和控制

原创 Oracle 作者:LuiseDalian 时间:2014-03-17 00:19:50 0 删除 编辑

事务处理和控制

事务是一个或多个SQL语句的序列,Oracle数据库将它们看作是一个单元,或者所有语句都被执行,或者都不执行。

事务处理是Oracle数据库的一个功能,允许多个用户同时工作于数据库上并确保每个用户可以数据的一致版本,确保所有的改变可以以正确的顺序被应用。

不同的用户可以在不互相破坏他人数据和不互相协调的情况下向相同的数据结构写入数据,因为Oracle数据库会自动锁住数据结构。为了最大化数据的可访问性,Oracle数据库以最短的时间锁住最少的数据。

你几乎不需要书写额外的代码来避免多用户同时访问数据的问题。然而如果你需要这个层次上的控制,可以手动覆盖默认的锁机制。

commit语句

COMMIT语句结束当前的事务,使它的改变持久化并对其它用户可见。

注意:事务可以跨多个块,一个块可以包含多个事务。

COMMIT语句的WRITE子句指定COMMIT操作产生的重做日志的书写优先权。

DROP TABLE accounts;

CREATE TABLE accounts

(

    account_id  NUMBER(6),

    balance     NUMBER (10,2)

);

 

INSERT INTO accounts (account_id, balance) VALUES (7715, 6350.00);

INSERT INTO accounts (account_id, balance) VALUES (7720, 5100.50);

--转帐操作

CREATE OR REPLACE PROCEDURE transfer

(

    from_acct  NUMBER,

    to_acct    NUMBER,

    amount     NUMBER

) AUTHID DEFINER AS

BEGIN

    UPDATE accounts

    SET balance = balance - amount

    WHERE account_id = from_acct;

 

    UPDATE accounts

    SET balance = balance + amount

    WHERE account_id = to_acct;

 

    COMMIT WRITE IMMEDIATE NOWAIT;

END;

注意:对于非分布式事务,在COMMIT_LOGGINGCOMMIT_WAIT数据库初始化参数没有被设置的情况下,默认的PL/SQL提交操作是BATCH NOWAIT

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1122900/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    5677651