最近 MySQL 数据库经常报错 Duplicate key 的错误,虽然我已经在 Insert 之前使用 query 进行了判断,如果已有则更新,但是还是经常会报这个错误,经过一段查询资料,发现 MySQL 已经提供了两种解决方法:
ON DUPLICATE KEY UPDATE
这个方法就是在 Insert 语句的时候,加上这个语句,如果数据库里面已有则更新。比如:
代码语言:javascript复制INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c 1;
我们还可以在 UPDATE 子句中使用 VALUES(col_name )函数从 INSERT 部分引用列值:
代码语言:javascript复制INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(a) VALUES(b);
插入多行情况:
代码语言:javascript复制INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(a) VALUES(b);
REPLACE INTO
REPLACE INTO 则会先删除数据,然后再插入。
代码语言:javascript复制REPLACE INTO table (a,b,c) VALUES (1,2,3);