Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara Menghindari Memasukkan Duplikat Catatan di MySQL

Terkadang Anda mungkin perlu mencegah penyisipan duplikat saat menambahkan baris ke tabel MySQL. Anda dapat dengan mudah melakukan ini menggunakan pernyataan INSERT IGNORE. Pada artikel ini, kita akan melihat cara menghindari penyisipan record duplikat di MySQL.


Cara Menghindari Memasukkan Data Duplikat di MySQL

Berikut adalah langkah-langkah untuk menghindari memasukkan catatan duplikat di MySQL. Ada dua bagian yang perlu diingat. Pertama, Anda perlu membuat indeks kolom UNIK untuk tabel Anda. Selanjutnya, Anda perlu memasukkan data menggunakan INSERT IGNORE untuk menghindari duplikat catatan.

Katakanlah Anda memiliki tabel berikut penjualan(id, tanggal_pesanan, jumlah)

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


1. Buat Indeks Unik

Kami menambahkan indeks UNIK untuk id kolom menggunakan pernyataan ALTER TABLE.

Berikut adalah sintaks untuk membuat indeks UNIK di MySQL.

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

Berikut adalah kueri SQL untuk menambahkan indeks UNIK ke id kolom di penjualan tabel.

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


2. Masukkan data menggunakan INSERT IGNORE

Selanjutnya, kita akan memasukkan data menggunakan INSERT IGNORE.

Sebelum melanjutkan, mari kita lihat apa itu INSERT IGNORE di MySQL dan bagaimana cara kerja INSERT IGNORE.


Apa itu INSERT IGNORE?

INSERT IGNORE adalah perintah yang memaksa MySQL untuk mengabaikan kesalahan saat Anda memasukkan data ke dalam tabel MySQL.


Bagaimana cara kerja INSERT IGNORE?

Dalam kasus kami, kami telah membuat indeks UNIK untuk id kolom. Jika kita menggunakan pernyataan INSERT untuk menambahkan data dengan baris duplikat, MySQL akan membuat kesalahan dan menghentikan eksekusi kueri setelah baris duplikat pertama.

Sebaliknya, ketika kita menggunakan INSERT IGNORE, MySQL akan diam-diam membuang penyisipan baris duplikat tanpa menghasilkan kesalahan, dan melanjutkan eksekusi kueri.

Jadi jika record tidak berisi data duplikat, MySQL akan memasukkannya seperti biasa. Jika ini adalah rekaman duplikat, maka MySQL akan mengabaikannya.

Berikut adalah query SQL untuk menyisipkan data tanpa duplikat di penjualan tabel.

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

Seperti yang Anda lihat, MySQL menghindari penyisipan baris duplikat, tanpa menghasilkan kesalahan apa pun.

Butuh alat pelaporan untuk MySQL? Ubiq memudahkan untuk memvisualisasikan data dalam hitungan menit, dan memantau di dasbor waktu nyata. Cobalah Hari ini!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. hasilkan hari dari rentang tanggal

  2. Bagaimana cara cepat mengganti nama database MySQL (mengubah nama skema)?

  3. Bagaimana cara alias bidang atau kolom di MySQL?

  4. Sintaks SQL SELECT – Didaftarkan oleh DBMS

  5. Lempar kesalahan yang mencegah pembaruan tabel di pemicu MySQL