MySQl:如果不存在则在更新前触发插入

时间:2011-09-15 14:28:40

标签: mysql triggers

我对MySQL并不熟悉。但出于性能原因,我想避免检查行是否已存在。目前我有一个包含2列(num,count)的表,我做了类似的事情:

SELECT num FROM numbers WHERE num = 123

然后如果行存在......

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

此外,请勿对COUNT等列名使用保留字。