我有下表:
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 ×2