Как предотвратить дублирование INSERT в MySQL?
Для этого вы можете использовать УНИКАЛЬНЫЙ ИНДЕКС:
alter table yourTableName ADD UNIQUE INDEX(yourColumnName1, yourColumnName2,....N);
Сначала создадим таблицу:
mysql> create table DemoTable
-> (
-> Value1 int,
-> Value2 int
-> );
Query OK, 0 rows affected (0.55 sec)
Ниже приведен запрос на добавление уникального индекса:
mysql> alter table DemoTable ADD UNIQUE INDEX(Value1, Value2);
Query OK, 0 rows affected (0.54 sec)
Records: 0 Duplicates: 0 Warnings: 0
Вставьте несколько записей в таблицу с помощью команды вставки:
Примечание. Используйте команду INSERT IGNORE вместо команды INSERT. Если запись не дублирует существующую запись, MySQL вставляет ее как обычно. Если запись является дубликатом, то ключевое слово IGNORE сообщает MySQL, что она должна автоматически удалить ее, не создавая ошибки.
mysql> insert ignore into DemoTable values(10,20);
Query OK, 1 row affected (0.14 sec)
mysql> insert ignore into DemoTable values(10,20);
Query OK, 0 rows affected, 1 warning (0.10 sec)
Отобразите все записи из таблицы с помощью оператора select:
mysql> select *from DemoTable;
Выход
Это даст следующий результат:
+--------+--------+
| Value1 | Value2 |
+--------+--------+
| 10 | 20 |
+--------+--------+
1 row in set (0.00 sec)