我有两个 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] 删除。
我来说两句