1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 07:08:01 +00:00

Add Ignore Duplicates When Inserting Records as a MySQL TIL

This commit is contained in:
jbranchaud
2023-06-27 10:21:56 -05:00
parent c185ac18c5
commit cc2d84ac19
2 changed files with 36 additions and 1 deletions

View File

@@ -0,0 +1,34 @@
# Ignore Duplicates When Inserting Records
While trying to run a seed script to set up some application data in a MySQL
database, I ran into several duplicate-key errors. Some of this data had
already been added in another context, but I still need some of the seeds.
```sql
insert into MerchantAccount (col1, col2, col3)
values ('data1', 'data2', 'data3'),
('data4', 'data5', 'data6'),
(...);
```
The solution was to allow MySQL to `ignore` the duplicate records and insert
the rest.
```sql
insert ignore into MerchantAccount (col1, col2, col3)
values ('data1', 'data2', 'data3'),
('data4', 'data5', 'data6'),
(...);
```
Notice all I had to do was update the statment by adding `ignore` right after
`insert.`
> If you use the `IGNORE` modifier, ignorable errors that occur while executing
> the `INSERT` statement are ignored. For example, without `IGNORE`, a row that
> duplicates an existing `UNIQUE` index or `PRIMARY KEY` value in the table
> causes a duplicate-key error and the statement is aborted. With `IGNORE`, the
> row is discarded and no error occurs. Ignored errors generate warnings
> instead.
[source](https://dev.mysql.com/doc/refman/8.0/en/insert.html)