INSERT INTO table_name (column1, column2, column3)
VALUES (value1, value2, value3),
(value4, value5, value6),
(value7, value8, value9);
这种sql 如果其中一条sql执行失败, 整条直线语句回回滚失败
当使用批量插入语句时,如果存在主键冲突,MySQL会抛出Duplicate entry ‘value’ for key 'PRIMARY’的异常,其中value表示引发冲突的主键值。
为了避免主键冲突导致整个插入操作失败,我们可以使用INSERT IGNORE或者INSERT INTO … ON DUPLICATE KEY UPDATE或者replace into语句。
1.INSERT IGNORE
INSERT IGNORE INTO table_name (column1, column2, column3)
VALUES (value1, value2, value3),
(value4, value5, value6),
(value7, value8, value9);
2.INSERT INTO … ON DUPLICATE KEY UPDATE
INSERT INTO table_name (column1, column2, column3)
VALUES (value1, value2, value3),
(value4, value5, value6),
(value7, value8, value9)
ON DUPLICATE KEY UPDATE column1 = value1, column2 = value2, column3 = value3;
3.replace into
如果存在primary or unique相同的记录,则先删除掉。再插入新记录。
REPLACE INTO books (name) VALUES (1, 'MySQL'),(1,'JAVA')