Inserire in una tabella MySQL o aggiornare se esiste

Voglio aggiungere una riga a una tabella di database, ma se esiste una riga con la stessa chiave unica voglio aggiornare la riga.

Per esempio,

insert into table (id, name, age) values(1, "A", 19)

Diciamo che la chiave unica è id, e nel mio database c'è una riga con id = 1. In questo caso voglio aggiornare quella riga con questi valori. Normalmente questo dà un errore. Se uso insert IGNORE ignorerà l'errore, ma ancora non aggiornerà.

Soluzione

Usa INSERT ... ON DUPLICATE KEY UPDATE

QUERY:

INSERT INTO table (id, name, age) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE    
name="A", age=19
Commentari (23)

Controlla REPLACE

http://dev.mysql.com/doc/refman/5.0/en/replace.html

REPLACE into table (id, name, age) values(1, "A", 19)
Commentari (7)

Prova questo:

INSERT INTO table (id, name, age) VALUES (1, 'A', 19) ON DUPLICATE KEY UPDATE id = id + 1;

Spero che questo aiuti.

Commentari (6)