小编tr3*_*sta的帖子

如何防止在 Oracle SQL 中可序列化的隔离级别下出现不一致的数据?

我有下表:

InStores
+--------+---------+-----+
| ProdID | StoreID | qty |
+--------+---------+-----+
| p1     | s1      |  25 |
| p1     | s2      |  70 |
+--------+---------+-----+
Run Code Online (Sandbox Code Playgroud)

和两个事务,T1 和 T2。

首先是T1:

declare s number(10);

begin
 SELECT SUM(qty) into s
 FROM instores
 WHERE prodID = 'p1';

 if s > 90 then
    update instores
    set qty = qty - 30
    where prodid = 'p1'
    and storeid = 's2';
 end if;
end;
Run Code Online (Sandbox Code Playgroud)

T1 看到 95 的总和并从 p1、s2 中减去 30(但尚未提交)。

T2 完全一样:

declare s number(10); …
Run Code Online (Sandbox Code Playgroud)

oracle

5
推荐指数
1
解决办法
628
查看次数

如何在 Oracle SQL 中强制加入浓密的树?

据我所知,默认连接是深左连接。如何在 4 张桌子上强制加入浓密的树?

oracle

3
推荐指数
1
解决办法
533
查看次数

标签 统计

oracle ×2