J'ai cherché mais je n'ai pas trouvé si c'était possible.
J'ai cette requête MySQL:
INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8)
L'identifiant de champ a un "index unique", il ne peut donc pas y en avoir deux. Maintenant, si le même identifiant est déjà présent dans la base de données, j'aimerais le mettre à jour. Mais dois-je vraiment spécifier à nouveau tous ces champs, comme:
INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8)
ON DUPLICATE KEY UPDATE a=2,b=3,c=4,d=5,e=6,f=7,g=8
Ou:
INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8)
ON DUPLICATE KEY UPDATE a=VALUES(a),b=VALUES(b),c=VALUES(c),d=VALUES(d),e=VALUES(e),f=VALUES(f),g=VALUES(g)
J'ai tout spécifié déjà dans l'insert ...
Une note supplémentaire, j'aimerais utiliser le travail autour pour obtenir l'ID!
id=LAST_INSERT_ID(id)
J'espère que quelqu'un pourra me dire quelle est la manière la plus efficace.
a=VALUES(a), b=VALUES(b), ...
est la voie à suivre. C'est comme ça que je fais pour toutes mesINSERT ON DUPLICATE KEY UPDATE
déclarations.