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

Menggunakan pernyataan IF di MySQL untuk memperbarui atau menyisipkan tanpa Prosedur Tersimpan?

MySQL memiliki fungsi khusus pada situasi ini. Ini disebut INSERT...ON DUPLICATE KEY UPDATE . Apa yang dilakukannya adalah mencoba INSERT catatan tetapi jika sudah ada, itu hanya akan UPDATE dia. '

Agar fungsi ini berfungsi, Anda harus memiliki UNIQUE kendala di atas meja. Berdasarkan contoh Anda, saya dapat melihat bahwa Anda memeriksa dua kolom untuk keberadaannya. Jika Anda sudah memiliki PRIMARY KEY , Anda cukup menambahkan UNIQUE kendala pada kedua kolom.

ALTER TABLE oc_product_attribute 
      ADD CONSTRAINT tb_uq UNIQUE(PRODUCT_ID, ATTRIBUTE_ID)

Setelah dieksekusi, Anda sekarang dapat menggunakan INSERT..ON DUPLICATE KEY UPDATE

INSERT INTO oc_product_attribute (PRODUCT_ID, ATTRIBUTE_ID, OtherCol, TEXT)
SELECT  MAX(PRODUCT_ID), MAX(ATTRIBUTE_ID), 1, 'XYZ'
FROM
        (
            SELECT  PRODUCT_ID, NULL ATTRIBUTE_ID 
            FROM    oc_product_description 
            WHERE   NAME = 'PRODUCT_NAME_HERE'
            UNION ALL
            SELECT  NULL PRODUCT_ID, ATTRIBUTE_ID 
            FROM    oc_attribute_description 
            WHERE   NAME='ATTRIBUTE_NAME_HERE'
        ) x
ON  DUPLICATE KEY UPDATE TEXT = 'ABC'

-- change OtherCol to the name of your column which you want to insert 1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL 8 membagi string dengan koma dan mengubahnya menjadi JSON ARRAY

  2. Apa cara terbaik untuk memasukkan beberapa baris ke dalam database mysql menggunakan php?

  3. Konversikan file BibTex ke entri database menggunakan Python

  4. MYSQL Tambahkan hari kerja hingga saat ini

  5. Batas waktu MySql JDBC bahkan dengan 'autoReconnect=true'