Insertion dans une table MySQL ou mise à jour si existante

Je veux ajouter une ligne à une table de base de données, mais si une ligne existe avec la même clé unique, je veux mettre à jour la ligne.

Par exemple,

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

Disons que la clé unique est "id", et que dans ma base de données il y a une ligne avec "id = 1". Dans ce cas, je veux mettre à jour cette ligne avec ces valeurs. Normalement, cela donne une erreur. Si j'utilise insert IGNORE, l'erreur sera ignorée, mais la mise à jour ne se fera toujours pas.

Solution

Utiliser [INSERT ... ON DUPLICATE KEY UPDATE][1]

QUERY:

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

[1] : https://dev.mysql.com/doc/en/insert-on-duplicate.html

Commentaires (23)

Consultez REPLACE

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

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

Essayez ceci :

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

J'espère que cela vous aidera.

Commentaires (6)