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;
希望能帮到你
请考虑这个简单的例子:一个 "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;
希望能帮到你