Home > MySQL, DB Server, Opensource World, PHP il turbo nel web > MySQL, eseguire una INSERT che esegua update in caso di valori duplicati

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

Share
  1. Rolando
    3 December 2007 a 13:37 | #1

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

  2. 3 December 2007 a 23:38 | #2

    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. 22 January 2008 a 23:22 | #3

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

  4. 24 January 2008 a 10:25 | #4

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

  5. Hyunkel
    1 February 2008 a 17:20 | #5

    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. 1 February 2008 a 19:10 | #6

    ;)

  1. Nessun trackback ancora...