我不是很熟悉MySQL。但是出于性能原因,我想避免检查行是否已经存在。目前,我有一个包含2列(数字,计数)的表,并且执行以下操作:

SELECT num FROM numbers WHERE num = 123


那么如果行存在...

UPDATE numbers SET count = count + 456 WHERE num = 123


否则,如果行不存在...

INSERT INTO numbers (num, count) VALUES (123, 456)


是否有可能避免始终查询表。像触发器一样...最后,我只想进行一个更新,以便自动完成插入。提前致谢

最佳答案

您不需要使用触发器,只需将UNIQUE约束添加到num列,然后:

INSERT INTO numbers SET num = 123, count = 456 ON DUPLICATE KEY UPDATE count = count + 1;


另外,请勿对列名使用保留字,例如COUNT。

关于mysql - MySQl:如果不存在,则在更新之前触发插入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7432520/

10-16 13:14