Mysql : 如何仅在更新语句影响 0 行时插入一行?

Mysql : How to insert a row only if an update statement affected 0 row?

请考虑这个简单的例子:一个 "User" table 和一个 "Computer" table。一个用户可以有0台或N台电脑。

我想为一个用户更新所有计算机(从 windows 到 mac,例如 ;-),如果用户还没有一台计算机,我想创建一台。

所以我无法在重复密钥更新时使用 INSERT ...,因为我没有任何重复密钥。

理想的查询是这样的:

UPDATE computer SET model='mac' WHERE user_id=1 
ON ROW_AFFECTED = 0 INSERT INTO computer SET model='mac', user_id=1

谢谢

在 mySQL 中,您可以这样尝试,应该可行:

IF NOT EXISTS (SELECT xyz FROM TABLE WHERE col = 'xyz') THEN
    INSERT INTO....
ELSE
    UPDATE....
END IF;

希望能帮到你