如何在mysql中使用update和select...for update

没有什么

我有两个 MySql 表 tableA 和 tableB,tableA 中的主键“id”用作 tableB 中的外键“parent_id”。我想使用 select...for update 更新 tableB 中的单行,以便其他用户在事务未结束时无法访问它。我的问题是 - 如何在一个查询中正确更新所选行?这是我的示例代码:

START TRANSACTION;
SELECT b.reserved, b.owner FROM tableB b, tableA a 
WHERE b.parent_id = a.id AND a.guid ='5344a990-fedf-4deb-a114-0d5d6a3ba180' FOR UPDATE;
UPDATE tableB SET...;
COMMIT;

谢谢!

米罗斯拉夫·格拉姆齐娜

是的,这是可能的。请看一看:

以下是您的查询的示例:

START TRANSACTION;
# Lock table using `FOR UPDATE`
SELECT 
  b.reserved, 
  b.owner 
FROM 
  tableB b,
  tableA a 
WHERE 
  b.parent_id = a.id 
  AND a.guid ='5344a990-fedf-4deb-a114-0d5d6a3ba180' 
FOR UPDATE;

# Update query
UPDATE 
  tableA 
SET 
  tableA.column1=(
    SELECT 
      b.reserved 
    FROM 
      tableB b, 
      LEFT JOIN tableA a ON a.id=b.id 
    WHERE 
      b.parent_id = a.id 
      AND a.guid ='5344a990-fedf-4deb-a114-0d5d6a3ba180'
  ) 
WHERE ... 
LIMIT 1;  

COMMIT;

希望这可以帮助,

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在HQL中使用select中的update?

来自分类Dev

如何在MySQL中的update ... set中使用case和if语句?

来自分类Dev

在MySQL中使用SELECT ... FOR UPDATE进行死锁

来自分类Dev

如何结合 SELECT 和 UPDATE MySQL

来自分类Dev

MySQL使用UPDATE和SELECT嵌套查询

来自分类Dev

如何在 Laravel 中使用 update() 功能?

来自分类Dev

如何使用SELECT FOR UPDATE

来自分类Dev

Mysql 程序:SELECT 和 UPDATE

来自分类Dev

在MySQL中使用多个UPDATE

来自分类Dev

在一个查询中使用INSERT,SELECT和UPDATE?

来自分类Dev

在1个查询中使用INSERT SELECT和UPDATE。是对的吗?

来自分类Dev

如何在函数的UPDATE或SELECT语句中使用动态列名?

来自分类Dev

如何在触发器中使用 Case-When 和 Update?(我的代码中的错误)

来自分类Dev

MySQL、SQL - 如何同时进行 SELECT、UPDATE 和 REPLACE

来自分类Dev

如何在UPDATE子句中使用ROW_NUMBER()?

来自分类Dev

如何在函数中使用查询结果执行UPDATE

来自分类Dev

如何在UPDATE语句中使用INNER JOIN?

来自分类Dev

如何在SQL UPDATE语句中使用IF条件?

来自分类Dev

如何在UPDATE语句中使用IF类型结构?

来自分类Dev

如何在symfony2中使用translation:update?

来自分类Dev

如何在rails中使用`after_update'回调?

来自分类Dev

MySQL UPDATE IF SELECT查询

来自分类Dev

在 UPDATE 中使用 CTE 和聚合函数

来自分类Dev

MySQL查询-在UPDATE内使用SELECT

来自分类Dev

MySQL查询-在UPDATE内使用SELECT

来自分类Dev

PDO SELECT 和 UPDATE 循环

来自分类Dev

SQLite如何同时使用UPDATE和LIMIT?

来自分类Dev

如何使用UPDATE IIF

来自分类Dev

在UPDATE查询中使用JOIN