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

6 Responses to “MySQL, eseguire una INSERT che esegua update in caso di valori duplicati”

  1. Rolandoon 03 Dic 2007 at 13:37

    Scusa ma la sintassi dell’ INSERT non dovrebbe essere questa?
    INSERT INTO tbl (a, b, c) VALUES (2, 2, 10)

  2. maxgranteon 03 Dic 2007 at 23:38

    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

  3. Alessandroon 22 Gen 2008 at 23:22

    Ma è fantastico! Non avevo ancora incontrato qst possibilità dopo anni di programmazione, mi hai risparmiato qualche if e qualche query di controllo!

  4. maxgranteon 24 Gen 2008 at 10:25

    Sono contento che ti possa essere d’aiuto l’articolo… ;)

  5. Hyunkelon 01 Feb 2008 at 17:20

    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…. ;)

  6. maxgranteon 01 Feb 2008 at 19:10

    ;)

Trackback URI | Comments RSS

Leave a Reply