我想更新一条记录(如果存在)。这是最简单的部分,但该记录可能不存在,所以让我们先创建它。伪代码:
UPDATE x SET y=1 WHERE id=5
如果结果是0,那么...
a, LOCK TABLE x
b, INSERT INTO...
c, UNLOCK TABLE x
但是我找不到具体的教程。我认为如果锁定成功,步骤 A 必须为“true”,如果已经锁定,则步骤 A 必须为“false”。但在同时运行的情况下,它总是正确的。
(Ps:我知道有replace into之类的操作,但这正是我所需要的)
如果你真的想锁定,你必须将
UPDATE
和INSERT
都放在锁定区域内。
LOCK TABLE x;
UPDATE x SET y = 1 WHERE id = 5;
IF FOUND_ROWS() = 0
THEN
INSERT INTO x (id, y) VALUES (5, 1);
END IF
UNLOCK TABLE x;