Понякога може да се наложи да предотвратите дублиране на вмъкване, докато добавяте редове към MySQL таблицата. Можете лесно да направите това, като използвате оператор INSERT IGNORE. В тази статия ще разгледаме как да избегнем вмъкването на дублиращи се записи в MySQL.
Как да избегнем вмъкването на дублиращи се записи в MySQL
Ето стъпките, за да избегнете вмъкването на дублиращи се записи в MySQL. Има две части, които трябва да имате предвид. Първо, трябва да създадете УНИКАЛЕН индекс на колона за вашата таблица. След това трябва да вмъкнете данни, като използвате INSERT IGNORE, за да избегнете дублиране на записи.
Да кажем, че имате следната таблица sales(id, order_date, amount)
mysql> create table sales( id int, order_date date, amount int );
1. Създайте уникален индекс
Добавяме УНИКАЛЕН индекс за id колона, използвайки израз ALTER TABLE.
Ето синтаксиса за създаване на УНИКАЛЕН индекс в MySQL.
alter table table_name ADD UNIQUE INDEX( column_name1, column_name2, ... column_nameN );
Ето SQL заявката за добавяне на УНИКАЛЕН индекс към id колона в продажби таблица.
mysql> alter table sales ADD UNIQUE INDEX(id);
2. Вмъкнете данни с помощта на INSERT IGNORE
След това ще вмъкнем данни с помощта на INSERT IGNORE.
Преди да продължим, нека разгледаме какво е INSERT IGNORE в MySQL и как работи INSERT IGNORE.
Какво е INSERT IGNORE?
INSERT IGNORE е команда, която принуждава MySQL да игнорира грешки, когато вмъквате данни в MySQL таблица.
Как работи INSERT IGNORE?
В нашия случай вече сме създали УНИКАЛЕН индекс за id колона. Ако използваме оператор INSERT за добавяне на данни с дублиращи се редове, MySQL ще изведе грешка и ще спре изпълнението на заявка след първия дублиран ред.
Вместо това, когато използваме INSERT IGNORE, MySQL безшумно ще отхвърли вмъкването на дублиран ред, без да генерира грешка, и ще продължи изпълнението на заявката.
Така че, ако записът не съдържа дублиращи се данни, MySQL ще го вмъкне както обикновено. Ако е дублиран запис, MySQL просто ще го игнорира.
Ето SQL заявката за вмъкване на данни без дубликати в продажби таблица.
mysql> mysql> insert ignore into sales(id,order_date,amount) values(1, '2021-01-01', 250), (1, '2021-01-01', 250), (2, '2021-01-02', 200), (3, '2021-01-03', 150), (2, '2021-01-02', 200); Query OK, 3 rows affected (0.10 sec) Records: 5 Duplicates: 2 Warnings: 0 mysql> select * from sales; +------+------------+--------+ | id | order_date | amount | +------+------------+--------+ | 1 | 2021-01-01 | 250 | | 2 | 2021-01-02 | 200 | | 3 | 2021-01-03 | 150 | +------+------------+--------+
Както можете да видите, MySQL избягва вмъкването на дублиращи се редове, без да генерира грешка.
Нуждаете се от инструмент за отчитане за MySQL? Ubiq улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте днес!