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

Cegah kenaikan otomatis pada sisipan duplikat MySQL

Anda dapat memodifikasi INSERT Anda menjadi seperti ini:

INSERT INTO tablename (tag)
SELECT $tag
FROM tablename
WHERE NOT EXISTS(
    SELECT tag
    FROM tablename
    WHERE tag = $tag
)
LIMIT 1

Dimana $tag adalah tag (dikutip dengan benar atau sebagai pengganti tentu saja) yang ingin Anda tambahkan jika belum ada di sana. Pendekatan ini bahkan tidak akan memicu INSERT (dan pemborosan peningkatan otomatis berikutnya) jika tag sudah ada di sana. Anda mungkin bisa membuat SQL yang lebih bagus dari itu, tetapi cara di atas akan berhasil.

Jika tabel Anda diindeks dengan benar maka SELECT tambahan untuk pemeriksaan keberadaan akan cepat dan database tetap harus melakukan pemeriksaan itu.

Pendekatan ini tidak akan berfungsi untuk tag pertama. Anda dapat menyemai tabel tag dengan tag yang menurut Anda akan selalu digunakan atau Anda dapat melakukan pemeriksaan terpisah untuk tabel kosong.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TEMUKAN_IN_SET() vs IN()

  2. Peringatan:mysql_query():3 bukan sumber MySQL-Link yang valid

  3. seberapa amankah pernyataan yang disiapkan PDO?

  4. Menghubungkan ke MySQL dari Android dengan JDBC

  5. UnicodeEncodeError:codec 'latin-1' tidak dapat menyandikan karakter