Postgresql 用户在两个浏览器选项卡中打开一个屏幕,并在毫秒内按下更新按钮

Postgresql 用户在两个浏览器选项卡中打开一个屏幕,并在毫秒内按下更新按钮,postgresql,transactions,database-deadlocks,Postgresql,Transactions,Database Deadlocks,我遇到了一个问题。任何帮助都将不胜感激 我使用PostgreSQL作为后端 问题是:用户在两个选项卡中打开一个屏幕,并在一秒钟内按下更新按钮 示例-表格字段-id-是否过帐 我在表上有一个标志,我正在将其设置为true-is_posted=true,并且在将该标志设置为true后,我有一个触发器,该触发器在其他表中插入少量记录。如果is_posted=true,则我不允许用户再次更新该记录 如果用户单击一个选项卡中的“更新”按钮,并在1-2秒后单击另一个选项卡上的“更新”按钮,则我会得到更新值,

我遇到了一个问题。任何帮助都将不胜感激

我使用PostgreSQL作为后端

问题是:用户在两个选项卡中打开一个屏幕,并在一秒钟内按下更新按钮

示例-表格字段-id-是否过帐

我在表上有一个标志,我正在将其设置为true-is_posted=true,并且在将该标志设置为true后,我有一个触发器,该触发器在其他表中插入少量记录。如果is_posted=true,则我不允许用户再次更新该记录

如果用户单击一个选项卡中的“更新”按钮,并在1-2秒后单击另一个选项卡上的“更新”按钮,则我会得到更新值,并轻松抛出“记录已更新”的验证消息

但是,如果用户遵循相同的过程,但在毫秒内,那么我不会获得更新的数据,并且记录会更新两次。它在其他表中创建多个记录,这会导致创建坏数据

请建议


谢谢,

这是您的应用程序的问题。应用程序如何检查记录是否已经更新?您是否尝试像更新t SET is_posted=TRUE那样更新它,其中id=?而且没有张贴?——顺便说一下,它与死锁无关。请考虑使用<代码> >版本>代码>的简单实现示例。