PHP-访问Oracle表中的锁定行


PHP - accessing locked row in an Oracle table

我有一个web应用程序,它需要向PHP页面(backend.PHP)发送多个Ajax请求

有一个Oracle表,比如说T1,它有两个int字段minmax(对于这个例子来说已经足够了,实际上它有点复杂)。

Backend.php需要读取mixmax,更新这些值(假设min+=2,max+=3),然后通过一些JSON返回min和max。

在这种情况下,我不能使用Oracle序列(因为在实际应用程序中有N行)。

我想在行上加一个锁,以避免不同的Ajax调用从该行读取相同的值。

我尝试运行(通过PHP的OCI)类似SELECT a, b FROM t1 FOR UPDATE SKIP LOCKED的东西,但似乎不起作用,2 Ajax调用有时会返回相同的A和B值。

如何使锁工作?有更好的方法吗?非常感谢。

我不确定您是否需要显式锁。一个简单的

update T1 set min=min+2, max=max+3 where ...

将自动锁定受影响的行。

您可能需要另一个选择来返回更新的值(或在PL/SQL中使用RETURNING)