当前位置:  开发笔记 > 数据库 > 正文

Postgresql并发

如何解决《Postgresql并发》经验,为你挑选了1个好方法。

在我正在工作的项目中,有一个带有"on update"触发器的表,它监视布尔列是否已更改(例如:false - > true =执行某些操作).但是这个动作只能连续一次完成.

将有多个客户端访问数据库,因此我可以假设最终,多个客户端将尝试并行更新同一行列.

"update"触发器本身是否处理并发本身,或者我需要在事务中执行它并手动锁定表?



1> Bill Karwin..:

触发器不处理并发性,无论您是否使用显式事务,PostgreSQL都应该做正确的事情.

PostgreSQL使用乐观锁定,这意味着实际更新行的第一个人获得该行的锁定.如果第二个人试图更新该行,他们的更新语句将等待查看第一个提交更改或回滚.

如果第一个人提交,第二个人会收到错误,而不是他们的更改通过并删除可能对他们感兴趣的更改.

如果第一个人回滚,第二个人的更新解除阻塞,并正常通过,因为现在它不会覆盖任何东西.

第二个人也可以使用该NOWAIT选项,如果他们的更新与未解决的更改冲突,则会立即发生错误而不是阻止.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有