【问题标题】:Write Conflict between two transactions [closed]两个事务之间的写冲突[关闭]
【发布时间】:2020-09-07 05:55:28
【问题描述】:

我是 DBMS 的菜鸟。我正在开发一个有多个读者和作者的项目。

这是项目的步骤。

  1. 用户登录
  2. 进行更改
  3. 然后点击提交
  4. 管理员审核更改并与主数据库合并。

所以,我想在每个用户登录我的项目时为他们使用一个事务。因为如果所有查询都执行且没有任何错误,事务会拍摄快照并提交数据。

如果两个用户想在同一行中写入,则事务会引发项目所需的错误。

现在我的问题是,如果发生这样的错误,那么我只希望该查询失败,如果没有错误,我仍然希望事务继续。

【问题讨论】:

  • 欢迎来到 Stackoverflow!您应该显示一些您为上述步骤尝试过的代码
  • @Mannoj 谢谢。但我仍在设计中。

标签: sql database postgresql transactions nosql


【解决方案1】:

您试图以错误的方式使用数据库事务的概念。数据库事务应该非常短(亚秒级)并且从不涉及用户交互。这个想法是将属于一起的语句分组,以便它们全部成功或全部失败。

您要做的是应用程序逻辑,应该由应用程序处理。这并不意味着您不能使用数据库。例如,您的表可能有一个保持状态的列(由客户输入、已批准...)。

【讨论】:

  • 感谢您的回复。你能建议做什么吗?有一个项目最多有 100 个用户。用户对本地数据库进行更改。在他们完成更改后,将其提交给管理员。如果管理员批准,则他们的本地数据库与主数据库合并。但是现在只有一个用户可以在有锁的情况下同时访问该项目。用户等待机会。我想打破这个锁,我在数据库中有多个读取器和写入器。我想要一个事务之类的东西,拍摄数据库的快照并允许用户进行更改。如果获得批准,则提交到主数据库。应该怎么做?
  • 您需要有人帮助您设计应用程序。这超出了 Questions 6 Answers 论坛所能做的。你应该找一位技术顾问。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-25
  • 2014-06-21
  • 2011-08-12
  • 2011-03-10
  • 1970-01-01
  • 1970-01-01
  • 2021-07-23
相关资源
最近更新 更多