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

Python mysql memeriksa duplikat sebelum memasukkan

Anda dapat mengetahui apakah itu ada di sana terlebih dahulu, dengan SELECT dengan url , atau Anda dapat membuat url bidang unik:

CREATE TABLE IF NOT EXISTS kompas_url
    ...
    url VARCHAR(1000) UNIQUE,
    ...
)

Ini akan menghentikan MySQL dari memasukkan baris duplikat, tetapi juga akan melaporkan kesalahan saat Anda mencoba dan memasukkan. Ini tidak baik—walaupun kita bisa menangani kesalahannya, itu mungkin menyamarkan orang lain. Untuk menyiasatinya, kami menggunakan ON DUPLICATE KEY UPDATE sintaks:

INSERT INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())
ON DUPLICATE KEY UPDATE modified_date = NOW()

Ini memungkinkan kami untuk memberikan UPDATE pernyataan dalam kasus nilai duplikat dalam bidang unik (ini dapat mencakup kunci utama Anda). Dalam hal ini, kami mungkin ingin memperbarui modified_date bidang dengan tanggal saat ini.

EDIT: Seperti yang disarankan oleh ~unutbu , jika Anda tidak ingin mengubah apa pun pada duplikat, Anda dapat menggunakan INSERT IGNORE sintaksis. Ini hanya berfungsi sebagai berikut:

INSERT IGNORE INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())

Ini hanya mengubah jenis kesalahan tertentu menjadi peringatan—yang paling berguna, kesalahan yang menyatakan akan ada entri unik duplikat. Jika Anda menempatkan kata kunci IGNORE ke dalam pernyataan Anda, Anda tidak akan mendapatkan kesalahan—kueri akan dibuang begitu saja. Dalam kueri yang kompleks, ini juga dapat menyembunyikan kesalahan lain yang mungkin berguna, jadi sebaiknya pastikan dua kali lipat kode Anda benar jika Anda ingin menggunakannya.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. BERBEDA kolom dalam database

  2. Menemukan semua orang tua di tabel mysql dengan satu kueri (Kueri Rekursif)

  3. Bagaimana menghindari kesalahan kehabisan memori di browser karena terlalu banyak panggilan ajax

  4. sisi server yang dapat didata jquery di codeigniter tidak berfungsi

  5. PHP membutuhkan waktu 90x lebih lama untuk menjalankan kueri daripada klien MySQL