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

Diperlukan solusi SQL upsert (insert+update) portabel

Satu-satunya solusi agnostik basis data sepenuhnya, menggunakan basis data yang agak modern, adalah memanggil Pembaruan lalu Sisipkan dalam dua operasi. Beberapa database tidak mengizinkan beberapa pernyataan yang dikirim dalam satu operasi dan beberapa database mungkin tidak mengembalikan jumlah baris yang terpengaruh oleh Pembaruan jadi saya tidak akan mengandalkan itu.

Update MyTable
Set Data = 'Data'
Where KeyCol = 'key';

(panggilan terpisah)

Insert Into MyTable(KeyCol, Data)
Select 'key', 'Data'
From ( Select 1 As Value ) As Z
Where Not Exists    (
                    Select 1
                    From MyTable As T1
                    Where T1.KeyCol = 'key'
                    );


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pdo memasukkan gambar ke dalam database secara langsung - selalu memasukkan BLOB - 0B

  2. Cara terbaik untuk menyimpan tag untuk kecepatan di tabel yang sangat besar

  3. Perhitungan persentase jumlah kelompok (*)

  4. SQLite dan pesanan khusus oleh

  5. cara membuat database mysql dari fabric secara dinamis