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

Sisipkan MySQL pada pembaruan duplikat untuk kunci non-PRIMARY

Anda memerlukan kueri yang memeriksa apakah ada baris dengan record_id Anda (atau person_id). Jika ada, perbarui, jika tidak, masukkan baris baru

IF EXISTS (SELECT * FROM table.person WHERE record_id='SomeValue')
    UPDATE table.person 
    SET some_text='new_some_text', some_other_text='some_other_text' 
    WHERE record_id='old_record_id'
ELSE
    INSERT INTO table.person (record_id, person_id, some_text, some_other_text) 
    VALUES ('new_record_id', 'new_person_id', 'new_some_text', 'new_some_other_text')

Pendekatan lain yang lebih baik adalah

UPDATE table.person SET (...) WHERE person_id='SomeValue'
IF ROW_COUNT()=0
    INSERT INTO table.person (...) VALUES (...)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Saya mendapatkan hasil ganda dari kueri mysql saat menggunakan karakter internasional, yaitu /Ä=A &=O,

  2. InnoDB mySQL tidak dapat mengatur ON DELETE SET DEFAULT'. Bagaimana mengatur?

  3. Perbedaan antara ajax normal dan polling panjang

  4. Tabel tidak ada setelah CREATE TABLE

  5. Penanganan Kesalahan Prosedur Tersimpan MySQL