如果更新row_count()= 0则插入

时间:2014-10-22 17:02:04

标签: mysql sql syntax sql-update sql-insert

我需要更新一个表行,但如果它不存在,则必须创建它。 我尝试过该代码但返回错误:

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,我认为插入查询将被解决。

我该怎么做才能解决它?

1 个答案:

答案 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约束,那么它将插入重复项。