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

pertanyaan MYSQL PADA DUPLICATE KEY UPDATE

ON DUPLICATE KEY UPDATE cukup lakukan SET pernyataan yang Anda berikan untuk itu dalam kasus kunci duplikat. Itu tidak membandingkan nilai kolom individual dan hanya memperbarui yang berbeda. Kedengarannya seperti itu akan berfungsi untuk apa yang ingin Anda lakukan selama Anda memiliki kolom yang tepat yang didefinisikan sebagai UNIQUE KEY atau PRIMARY KEY .

Namun, yang biasanya saya lakukan adalah menjalankan penyisipan dan kemudian menangkap kesalahan dan melakukan tindakan yang berbeda jika perlu. Ini memiliki sisi bawah mengeluarkan 2 pertanyaan jika ada duplikat tetapi menurut saya itu jauh lebih dapat dipertahankan.

Contoh:

$db = new PDO($dsn, $user, $pass);
$stmt = $db->prepare('INSERT INTO some_tbl (col1,col2,col3) VALUES (?,?,?)');
$values = array('Col 1 value','Col 2 Value', 'Col 3 Value');
try {
  $db->execute($values);
} catch (PDOException $e) {
  if($e->getCode() == 23000){
    // dupe key do some other action whether update or otherwise
  } else {
    // rethrow non dupe errors
    throw $e;
  }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menghapus semua acara di MySQL

  2. Tidak dapat terhubung ke instans RDS dari instans EC2

  3. Bagaimana Anda mendapatkan UTC dari Field datetime?

  4. Peringatan:gagal membuka aliran:Tidak ada file atau direktori seperti itu di C:\wamp\www\laravel\bootstrap\autoload.php pada baris 17

  5. Menggunakan SSIS untuk meminta kueri sumber ADO .NET meneruskan parameter dari SQL Server