Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak uniknąć wstawiania zduplikowanych rekordów w MySQL?

Czasami może być konieczne zapobieganie duplikowaniu wstawiania podczas dodawania wierszy do tabeli MySQL. Możesz to łatwo zrobić za pomocą instrukcji INSERT IGNORE. W tym artykule przyjrzymy się, jak uniknąć wstawiania zduplikowanych rekordów w MySQL.


Jak uniknąć wstawiania zduplikowanych rekordów w MySQL

Oto kroki, aby uniknąć wstawiania zduplikowanych rekordów w MySQL. Należy pamiętać o dwóch częściach. Najpierw musisz utworzyć UNIKALNY indeks kolumn dla swojej tabeli. Następnie musisz wstawić dane za pomocą INSERT IGNORE, aby uniknąć zduplikowanych rekordów.

Załóżmy, że masz następującą tabelę sprzedaż(id, data_zamówienia, kwota)

mysql> create table sales(
          id int, 
          order_date date, 
          amount int
          );


1. Utwórz unikalny indeks

Dodajemy UNIKALNY indeks dla id kolumna za pomocą instrukcji ALTER TABLE.

Oto składnia tworzenia UNIQUE indeksu w MySQL.

alter table table_name ADD UNIQUE INDEX(
        column_name1, 
        column_name2,
        ...
        column_nameN
        );

Oto zapytanie SQL, aby dodać UNIQUE indeks do id kolumna w sprzedaży tabela.

mysql> alter table sales ADD UNIQUE INDEX(id);


2. Wstaw dane za pomocą INSERT IGNORE

Następnie wstawimy dane za pomocą INSERT IGNORE.

Zanim przejdziemy dalej, spójrzmy, czym jest INSERT IGNORE w MySQL i jak działa INSERT IGNORE.


Co to jest WSTAWIANIE IGNOROWANIA?

INSERT IGNORE to polecenie, które zmusza MySQL do ignorowania błędów podczas wstawiania danych do tabeli MySQL.


Jak działa INSERT IGNORE?

W naszym przypadku stworzyliśmy już UNIKALNY indeks dla id kolumna. Jeśli użyjemy instrukcji INSERT w celu dodania danych ze zduplikowanymi wierszami, MySQL zgłosi błąd i zatrzyma wykonywanie zapytania po pierwszym zduplikowanym wierszu.

Zamiast tego, gdy użyjemy INSERT IGNORE, MySQL po cichu odrzuci wstawianie zduplikowanego wiersza bez generowania błędu i kontynuuje wykonywanie zapytania.

Jeśli więc rekord nie zawiera zduplikowanych danych, MySQL wstawi je jak zwykle. Jeśli jest to zduplikowany rekord, MySQL po prostu go zignoruje.

Oto zapytanie SQL umożliwiające wstawienie danych bez duplikatów w sprzedaży tabela.

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 |
+------+------------+--------+

Jak widać, MySQL unika wstawiania zduplikowanych wierszy bez generowania żadnego błędu.

Potrzebujesz narzędzia do raportowania dla MySQL? Ubiq ułatwia wizualizację danych w ciągu kilku minut i monitorowanie w pulpitach nawigacyjnych w czasie rzeczywistym. Wypróbuj już dziś!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak konwertować małe litery na wielkie w MySQL

  2. Host „xxx.xx.xxx.xxx” nie może połączyć się z tym serwerem MySQL

  3. MySQL Nieprawidłowa wartość daty i godziny:'0000-00-00 00:00:00'

  4. Jak utworzyć złożony klucz podstawowy w MySQL

  5. Zrozumienie widoków w SQL