ITPub博客

首页 > 应用开发 > IT综合 > update restart

update restart

原创 IT综合 作者:xsb 时间:2007-12-28 09:26:37 0 删除 编辑

Please note consistent read and current read when UPDATE statment start.

[@more@]

CREATE TABLE ud2_test(c1 NUMBER,c2 NUMBER,c3 NUMBER);
INSERT INTO ud2_test VALUES (1,1,1);
COMMIT;
CREATE OR REPLACE TRIGGER trg_ud2_test
BEFORE UPDATE ON ud2_test
FOR EACH ROW
BEGIN
dbms_output.put_line(:OLD.c1 || ',' || :OLD.c2 || ',' || :OLD.c3);
dbms_output.put_line(:NEW.c1 || ',' || :NEW.c2 || ',' || :NEW.c3);
END;

session1:

update ud2_test set c1=c1+1 where c2>0;
update ud2_test set c1=c1+1 where c2>0 ;
update ud2_test set c1=c1+1 where c2>0;

session2:

set serveroutput on
update ud2_test set c1=c1+10 where c2>0;
(session1 commit)
1,1,1
11,1,1
4,1,1
14,1,1
1 row updated
rollback;

etc:

update ud2_test set c3=c3+10 where c2>0;
(session1 commit)
4,1,1
4,1,11
5,1,1
5,1,11
1 row updated
rollback;

CREATE OR REPLACE TRIGGER trg_ud2_test
BEFORE UPDATE ON ud2_test
FOR EACH ROW
BEGIN
dbms_output.put_line( :OLD.c2 || ',' || :OLD.c3);
dbms_output.put_line( :NEW.c2 || ',' || :NEW.c3);
END;

update ud2_test set c3=c3+10 where c2>0;
(session1 commit)
4,1,1
4,1,11
1 row updated
rollback;

update ud2_test set c3=c3+10 where c1>0;
(session1 commit)
4,1,1
4,1,11
4,1,1
4,1,11
1 row updated
rollback;

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

上一篇: commit_write
请登录后发表评论 登录
全部评论
  • 博文量
    66
  • 访问量
    3082307