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

INSERT IN ... SU AGGIORNAMENTO DUPLICATO tutti i valori

INSERT INTO … ON DUPLICATE KEY UPDATE funziona in questo modo:

  • tenta di inserire una riga come al solito
  • se si verifica una violazione del vincolo in una qualsiasi colonna, esegue l'UPDATE istruzione invece sulla riga esistente con la quale INSERT dichiarazione si è scontrata

Ciò significa semplicemente se il UPDATE l'istruzione da sola avrebbe successo, il suo ON DUPLICATE KEY UPDATE equivalente funzionerà anche. Ciò significa che ovviamente non puoi violare alcun vincolo in UPDATE istruzione o l'intera operazione fallirà (ad esempio cercando di impostare un valore su un UNIQUE colonna che esiste già in un'altra riga).

Se imposti di nuovo lo stesso valore sulla stessa colonna, è essenzialmente un no-op. Il valore nella colonna non cambia e quindi non può nemmeno causare errori (supponiamo che tu non abbia un BEFORE UPDATE davvero originale trigger che possono comportarsi male). Il numero di colonne è irrilevante qui, puoi cambiarne quante o poche in un'istruzione come vuoi.