sql >> Database teknologi >  >> RDS >> Mysql

MYSQL PÅ DUBLIKAT NØGLEOPDATERING spørgsmål

ON DUPLICATE KEY UPDATE udfører blot SET erklæringer, du giver den i tilfælde af en dubletnøgle. Den sammenligner ikke individuelle kolonneværdier og opdaterer kun de forskellige. Det lyder som om det vil fungere til det, du vil gøre, så længe du har den eller de rigtige kolonner defineret som UNIQUE KEY eller PRIMARY KEY .

Men det, jeg normalt gør, er at køre indsættelsen og derefter fange fejlen og udføre en anden handling, hvis jeg har brug for det. Dette har den negative side ved at udstede 2 forespørgsler, hvis der er en dublet, men efter min mening er det meget mere vedligeholdeligt.

Eksempel:

$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. GROUP_CONCAT BESTIL AF

  2. Bruger MySQL væsentligt flere ressourcer sammenlignet med andre DBMS?

  3. Brug af CONTINUE In Loops for at genoptage kontrol i Oracle

  4. Hvordan deaktiverer man kolonnestatistik i MySQL 8 permanent?