Corsi on-line

MySQL: INSERT e UPDATE nella stessa query

Immaginiamo di voler inserire un determinato record all’interno di una tabella e che ci sia la possibilità che questo sia già stato memorizzato;  per fare un esempio pratico, potrebbe essere già presente in tabella la seguente riga:

  • id: 10;
  • canzone: Goodbye Malinconia;
  • autore: Caparezza;
  • categoria: Rap.

Mettiamo ora il caso di voler inserire la stessa canzone ma associando ad essa un valore diverso per la categoria (ad esempio “HipHop” invece di “Rap”), a questo punto potremmo seguire due diverse procedure: effettuare una SELECT di controllo e successivamente l’INSERT, oppure eseguire contemporaneamente una INSERT e una UPDATE tramite un’unica istruzione.

La query necessaria per l’inserimento potrebbe essere la seguente:

INSERT INTO audio (canzone, categoria) VALUES ('Goodbye Malinconia', 'HipHop') ON DUPLICATE KEY UPDATE categoria='HipHop';

In questo modo il nuovo record verrà inserito soltanto nel caso in cui non si verifichi una ripetizione, diversamente verrà effettuato un semplice aggiornamento, sarà inoltre possibile evitare inutili duplicati (“ridondanza”) e ulteriori query per verificarne la presenza.

Post correlati
I più letti del mese
Tematiche