PL/SQL Developer 窥探事务
一次登录代表一个连接
一个SQL Window 代表一个会话(session),有唯一的SID
事务(transaction) 由 insert 、update 或者 delete 开启
由 commit 或者 rollback 结束
会话中可以有事务,可以没有事务
会话之间是不可见的(事务中的CUD对于其他会话不可见)
不能看到隔壁屋,只能看到自己屋
数据存储区域是所有会话共享的(commit 会把改动持久化到数据存储区)
...........................................................................................................
INSERT INTO person VALUES ('1','1',1); --487
DELETE FROM person --2476
UPDATE person SET age = 12 --2676
SELECT * FROM person --1721
SELECT OBJECT_NAME AS 对象名称, S.SID, S.SERIAL#, P.SPID AS 系统进程号 FROM V$LOCKED_OBJECT L, DBA_OBJECTS O, V$SESSION S, V$PROCESS P WHERE L.OBJECT_ID = O.OBJECT_ID AND L.SESSION_ID = S.SID AND S.PADDR = P.ADDR;
1. SID 是否唯一不变
- SQL Window 打开之后变有了一个session,有一个唯一SID 。
- 执行插入,开启事务后查看;再次开启再次查看。SID 不变。
- 关闭window 或者断开连接,session 就会关闭。
2. A会话中CUD事务其他会话是否可见
- 在insert window中执行插入,不提交。在select window 中执行查询 ,看不到记录
- insert window 中 提交。select window中执行查询 可以查看到记录
3. A会话中的CUD事务是否自己可见
- insert window中执行插入
- insert window中执行查询,可以看到数据