question:
测试cs隔离级别
打开两个cmd窗口,
在cmd1窗口中执行
tt表(id int,val varchar(10))
ID VAL
----------- ----------
1 aa
2 bb
3 nn
4 mm
C:UsersAdministrator>
db2 +c declare c1 cursor for select * from xdgl.tt with c
sDB20000I SQL 命令成功完成。
C:UsersAdministrator>
db2 +c open c1DB20000I SQL 命令成功完成。
C:UsersAdministrator>
db2 +c fetch c1ID VAL
----------- ----------
1 aa
1 条记录已选择。
在cmd2中 get snapshot for locks on kinoa
应用程序句柄 = 584
应用程序标识 = *LOCAL.DB2.130110060019
序号 = 00015
应用程序名 = db2bp.exe
CONNECT 授权标识 = ADMINISTRATOR
应用程序状态 = UOW 正在等待
状态更改时间 = 未收集
应用程序代码页 = 1386
挂起的锁定 = 3
总计等待时间(毫秒) = 0
锁定列表
锁定名称 = 0x01000000010000000200602056
锁定属性 = 0x00000000
发行版标志 = 0x40000000
锁定计数 = 1
挂起计数 = 0
锁定对象名 = 0
对象类型 = 内部变化锁定
方式 = S
锁定名称 = 0x53514C43324832307F4760B841
锁定属性 = 0x00000000
发行版标志 = 0x40000000
锁定计数 = 1
挂起计数 = 0
锁定对象名 = 0
对象类型 = 内部方案锁定
方式 = S
锁定名称 = 0x02000903000000000000000054
锁定属性 = 0x00000000
发行版标志 = 0x00000001
锁定计数 = 1
挂起计数 = 0
锁定对象名 = 777
对象类型 = 表
表空间名 = USERSPACE1
表模式 = XDGL
表名 = TT
方式 = IS
得到锁状况如上所示,
疑问:
1、当前锁定的是 行( 1 ,aa),还是游标中未获取出来的下一行?
2、我在cmd2执行
C:UsersAdministrator>db2 update xdgl.tt set val='1aaa' where id=1
DB20000I SQL 命令成功完成。
C:UsersAdministrator>db2 update xdgl.tt set val='aaaa' where id=2
DB20000I SQL 命令成功完成。
均没有问题
,请问不应该是锁定一行吗?为什么别的应用程序还可以操作?
收起