Mysql 根据主键判断 插入或者更新
有时会遇到一种情况,当数据表不存在某记录时便插入新记录,当数据表中已经存在该记录时则更新该记录。
当指定了ON DUPLICATE KEY UPDATE,当插入新的记录会导致主键列或UNIQUE列出现重复数据时,则对旧的记录执行UPDATE。
例如,有一个计数器表用来记录网站每日的访问数:
CREATE TABLE daily_counter ( id INT UNSIGNED AUTO_INCREMENT, day DATE NOT NULL UNIQUE, cnt INT UNSIGNED NOT NULL, PRIMARY KEY (id) );
更新计数器时,当天的第一次访问在计数器表里插入一条新的记录,后面的访问则只需要更新该记录:
INSERT INTO daily_counter(day, cnt) VALUES(CURDATE(), 1) ON DUPLICATE KEY UPDATE cnt = cnt + 1;