这种情况可以直接Update后查看影响的行数来判断这条数据不存在,此时不存在,再去Insert,就免去了每次都要去Select一次判断数据的存在
DECLARE isCol TINYINT DEFAULT 0; UPDATE fish_game_status SET GameStatus = Status WHERE UserID = User_ID; SELECT ROW_COUNT() INTO isCol; IF isCol = 0 THEN INSERT INTO fish_game_status VALUES(User_ID,Status); END IF;
注意,就是不要传相同状态过来,因为在Update的时候,数值相同时,影响的行数还是为0的,此时去插入数据,这就炸了,主键不能重复。所以应该在应用层实现判断且没改变一次只进行一次调用。