Dic 03 2007
MySQL, eseguire una INSERT che esegua update in caso di valori duplicati
In mysql, ma più in generale con l’SQL è possibile far eseguire al database una INSERT che, nel caso vi sia un duplicato con i valori passati, provveda ad eseguire un’UPDATE sul database.
Ad esempio:
$sql = “INSERT INTO tbl SET
a = 2,
b = 2,
c = 10
ON DUPLICATE KEY UPDATE b = b + “.$b;
In questo caso se una chiave primaria o più genericamente un indica UNIQUE dovesse verificare la presenza di un valore duplicato verrà eseguito un UPDATE che aggiorna il campo ‘b’ sommandogli il valore di $b.
Ciao. Maxgrante
info[AT]massimo-caselli[DOT]com
Scusa ma la sintassi dell’ INSERT non dovrebbe essere questa?
INSERT INTO tbl (a, b, c) VALUES (2, 2, 10)
Ciao,
non necessariamente… io ad esempio uso il SET.
Quello che conta è il fatto che in caso di fail di una chiave primaria o unique il DB esegue un’update.
Ciao. Max
Ma è fantastico! Non avevo ancora incontrato qst possibilità dopo anni di programmazione, mi hai risparmiato qualche if e qualche query di controllo!
Sono contento che ti possa essere d’aiuto l’articolo…
Ciao Max,
grazie x la dritta…c’avevo provato anche io, ma sfortunatamente non avevo strutturato per bene la query e quindi non funzionava..mentre invece con i SET nell’insert….