我需要更新一个表行,但如果它不存在,则必须创建它。 我尝试过该代码但返回错误:
UPDATE creature SET name="Bip" WHERE guid = 1;
IF ROW_COUNT()=0 THEN
INSERT INTO creature (guid, name) VALUES(1, "Bip");
END IF;
我需要在插入之前更新,所以我不能使用“INSERT ... ON DUPLICATE KEY UPDATE ...”
多数民众赞成,如果ROW_COUNT为0,我认为插入查询将被解决。
我该怎么做才能解决它?
答案 0 :(得分:1)
您可以使用INSERT ... ON DUPLICATE KEY
:
INSERT INTO creature (guid, name) VALUES (1, "Bip")
ON DUPLICATE KEY UPDATE name=VALUES(name)
应该插入新行,或者如果guid
发生冲突,则会更新名称。
请注意,您需要在UNIQUE
上设置guid
索引才能生效。如果没有UNIQUE
约束,那么它将插入重复项。