如何防止两个不同查询之间的表上的任何更改

时间:2016-11-04 08:04:28

标签: ruby-on-rails rails-activerecord

因此,假设我的rails应用程序中有几个进程可以访问数据库。现在,在其中一个进程中,我想查询一个表,然后再次查询它。我的问题是如何确保同一进程的两个查询之间的其他进程没有对表进行编辑?交易有帮助吗?我不这么认为。

1 个答案:

答案 0 :(得分:0)

好的,你有几个选择。我对您的应用程序架构或您正在使用的数据库了解不多。根据您使用的数据库(mysql,pgsql等),您可以执行table locking。这项工作如何区别于DB到DB的详细信息。除了锁定表之外,您可以使用某种排队系统(lick active jobdelayed job),它将对该表的所有写入进行排队,并且只在当前写入完成后处理对该表的写入。这是一个真正的高级解释,您需要考虑一些注意事项,例如:

  • 用户或系统是否希望这些写入是实时的
  • 延迟这些写入会导致race condition
  • 您是否有资源整合排队系统
  • 您当前的数据库是否提供表锁定

所以这些是你研究的起点我会说如果你只是要停止表格编辑,你将不得不确保你存储所有发生白色表格处于锁定状态的写入