select for update 的意思

SELECT  FOR  UPDATE  光标
为了对正在处理(查询) 的行不被另外的用户改动,oracle 提供一个 FOR UPDATE 子句来对所选择的行进行锁住.

--写订票的存储过程
    create or replace procedure get_ticket(no number)
    as
     sl number;
     no_ticket exception;
    begin
    --<1>查出余数(加锁)
      select remain_sl into sl
       from ticket where train_no = no
       for update;
    --<2>判断余数的数量
      if sl > 0 then
        --修改
         update ticket set remain_sl
            =remain_sl - 1
         where train_no = no;
         dbms_output.put_line('订票成功');
      else
        raise no_ticket;
      end if;
    --<3>
       commit;   --必须的 
    exception
       when no_ticket then
         raise_application_error(-20001,'票已经售完了');
         rollback;  --很关键的,解除锁
    end;

转载于:https://www.cnblogs.com/pan11jing/archive/2009/08/13/1545367.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值