| SQL> create table t(id number,nick varchar2(32),status number,email varchar2(32),gmt_modified date);
Table created.
SQL> desc t; Name Null? Type ----------------------------------------- -------- ---------------------------- ID NUMBER NICK VARCHAR2(32) STATUS NUMBER EMAIL VARCHAR2(32) GMT_MODIFIED DATE
SQL> begin 2 for i in 1..5 loop 3 insert into t values(i,'test',0,'test@taobao.com',sysdate); 4 end loop; 5 commIT; 6 end; 7 /
PL/SQL procedure successfully completed.
SQL> alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';
Session altered.
SQL> select * from t;
ID NICK STATUS EMAIL GMT_MODIFIED -- ------ ---------- ------------------- ------------------- 1 test 0 test@taobao.com 2008-04-09 13:28:27 2 test 0 test@taobao.com 2008-04-09 13:28:27 3 test 0 test@taobao.com 2008-04-09 13:28:27 4 test 0 test@taobao.com 2008-04-09 13:28:27 5 test 0 test@taobao.com 2008-04-09 13:28:27 --session 1执行,但不提交 SQL> update t set status=1,gmt_modified=sysdate where id in ( 2 select id from (select id from t where nick='test' and status=0 order by id asc) 3 where rownum < 2) and status=0;
1 row updated.
SQL> select * from t;
ID NICK STATUS EMAIL GMT_MODIFIED -- ------ ---------- -------------------- ------------------- 1 test 1 test@taobao.com 2008-04-09 13:36:31 2 test 0 test@taobao.com 2008-04-09 13:28:27 3 test 0 test@taobao.com 2008-04-09 13:28:27 4 test 0 test@taobao.com 2008-04-09 13:28:27 5 test 0 test@taobao.com 2008-04-09 13:28:27
--session 2也执行这样的语句,出现等待。 SQL> update t set status=1,gmt_modified=sysdate where id in ( 2 select id from (select id from t where nick='test' and status=0 order by id asc) 3 where rownum < 2) and status=0;
--session 1提交 commIT;
--session 2执行完成,查看结果 SQL> select * from t;
ID NICK STATUS EMAIL GMT_MODIFIED --- ----- ---------- ------------------- ------------------- 1 test 1 test@taobao.com 2008-04-09 13:48:30 --session 1更新了这条 2 test 1 test@taobao.com 2008-04-09 13:48:37 --session 2更新了这条 3 test 0 test@taobao.com 2008-04-09 13:28:27 4 test 0 test@taobao.com 2008-04-09 13:28:27 5 test 0 test@taobao.com 2008-04-09 13:28:27 |