0

我们使用 activerecord 来操作数据库中的数据。但是我们遇到了写冲突的麻烦。这很像多线程编程中的读/写冲突。在数据库的情况下,我不知道是否应该像在多线程编程中锁定内存访问一样锁定数据库。

更具体地说,是以下情况:

1程序A用从数据库读取的数据创建一个活动记录,然后对其进行修改。

2 程序B 创建一个activerecord 完全引用数据库中的同一行。

3 A 将数据写回db。

4 B也将数据写入db。

冲突来了。

我们使用 yii 框架构建我们的站点,并使用 activerecord 访问 MySql 数据库。

我们应该在我们的逻辑中做所有的事情还是使用一些数据库实用程序?

4

1 回答 1

1

将所有东西放入事务中并select for update在选择行时使用应该可以解决问题。

SELECT for UPDATE在拥有该行的线程提交新版本之前,不会让其他线程选择同一行。

于 2013-09-26T09:05:32.030 回答