📄 isolationlevels.sql
字号:
-- single user test for the various isolation levelsprepare getIsolation as 'values current isolation';autocommit off;call SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS(1);maximumdisplaywidth 2000;-- create a tablecreate table t1(c1 int not null constraint asdf primary key);commit;-- insert a rowinsert into t1 values 1;-- verify table scan gets row lock at read committedselect * from t1;values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();-- verify matching index scan gets row lock at read committedselect * from t1 where c1 = 1;values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();-- verify WITH clause worksselect * from t1 with rr;values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();-- verify SET ISOLATION commits and changes isolation levelset isolation RR;execute getIsolation;-- rollback should find nothing to undorollback;select * from t1;values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();set isolation reset;execute getIsolation;-- verify matching index scan gets row lock at read committedselect * from t1 where c1 = 1;values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();-- verify SET ISOLATION commits and changes isolation levelset isolation read committed;execute getIsolation;-- rollback should find nothing to undorollback;select * from t1;values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();set current isolation = reset;execute getIsolation;-- verify SET ISOLATION commits and changes isolation levelset current isolation = RS;execute getIsolation;-- rollback should find nothing to undorollback;select * from t1;values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();set isolation to reset;execute getIsolation;-- verify SET ISOLATION commits and changes isolation levelset isolation = dirty read;execute getIsolation;-- rollback should find nothing to undorollback;select * from t1;values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();-- test WITH clauseset isolation serializable;execute getIsolation;select * from t1 with cs;values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();set isolation cursor stability;execute getIsolation;select * from t1 with RR;values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();set isolation serializable;execute getIsolation;select * from t1 with RS;values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();set current isolation to read committed;execute getIsolation;select * from t1 with ur;values SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS();-- unknown isolation levelselect * from t1 with rw;-- check the db2 isolation levels can be used as identifierscreate table db2iso(cs int, rr int, ur int, rs int);select cs, rr, ur, rs from db2iso;-- cleanupdrop table t1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -