在UPDATE查询中选择... FOR UPDATE

时间:2016-01-29 21:04:52

标签: mysql

我一直在尝试实现一个简单的脚本,该脚本可以锁定表格,更新某些字段,然后将其解锁。

这是我的表:

mysql> SHOW COLUMNS FROM tb1;
+---------------+---------+------+-----+---------+-------+
| Field         | Type    | Null | Key | Default | Extra |
+---------------+---------+------+-----+---------+-------+
| id            | int(11) | YES  | PRI | NULL    |       |
| status        | int(1)  | YES  |     | 0       |       |
+---------------+---------+------+-----+---------+-------+

让我们看看你们是否理解我想要做的事情:

  1. 开始交易
  2. 使用FOR UPDATE语句选择状态为!= 1的所有行(可能返回多于1行);
  3. 更新在第2轮中选择的行的字段status
  4. 提交
  5. 我试图在很多方面实现这一点,但是我不能保留第2遍中获得的SELECT数据而我不能使用SELECT ... FOR UPDATE作为UPDATE的子查询,就像这样UPDATE tb1 SET status=1 WHERE id IN (SELECT id FROM tb1 WHERE status != 1 FOR UPDATE);

    是否可以实现此目的而不是逐行更新?

0 个答案:

没有答案