【发布时间】:2020-03-19 19:26:58
【问题描述】:
在我的 Web 应用程序中,我在数据库表中存储了一个计数器值,我需要在每个事务(高度并发)时递增或重置它。我是否需要显式锁定该行以避免丢失更新? 已提交读取事务隔离级别正在连接级别使用。以下语句更新计数器
UPDATE Counter c SET value =
CASE
WHEN c.last_updated = SYSDATE THEN c.value+1
ELSE 1
END,
last_updated = SYSDATE
WHERE c.counter_id = 123;
据我所知,该语句是原子的,读取提交的隔离级别隐式锁定更新语句的行。在这种情况下,这是否会使显式锁定的使用变得多余?
【问题讨论】:
标签: database oracle transactions locking acid