优化Select后判断存不存在再Update的语句

这种情况可以直接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的,此时去插入数据,这就炸了,主键不能重复。所以应该在应用层实现判断且没改变一次只进行一次调用。


首页 我的博客
粤ICP备17103704号