我有两个MySql表tableA和tableB,主键"id“在tableA中用作tableB中的外键"parent_id”。我希望使用tableB更新更新select...for中的单行,以便在事务尚未结束时其他用户无法访问它。我的问题是-如何在一个查询中正确更新选定的行?下面是我的示例代码:
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;谢谢!
发布于 2019-02-19 11:34:38
是的,这是可能的。请看一看:
下面是查询内容的示例:
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;希望这能帮上忙
https://stackoverflow.com/questions/54764913
复制相似问题