lunarwildgoose 发表于 2012-08-12 19:29

有没办法使得行锁定且不可读

希望在对某一行进行事务操作时禁止其他对此行的读取。
用select   ....for update锁定行的时候其他的select读操作还是可以进行,不符合预期。
用lock table,却把整个表都给锁了,影响太大。

要求事务操作时禁止其他读取是因为,事务中将对此行先做读出,然后根据当前各字段数值进行逻辑判断和处理,再更新行。下一个对此行的事务事务再根据更新后的此行内容读出在进行处理和更新。如果不禁止行读入的话,后事务中的读入的内容并不是前事务更新后的数据。

请各位指教!谢谢

lunarwildgoose 发表于 2012-08-12 21:57

找到个pg_advisory_lock倒也也类似,只是select变得麻烦,而且不能防止别人不加pg_advisory_lock的select查询,就显得没意义。

trainee 发表于 2012-09-22 15:26

那你另外的select 后面也加for update, 最好后面再加上个nowait
阻塞普通的select不是个好想法,
页: [1]
查看完整版本: 有没办法使得行锁定且不可读