Eu procurei, mas não encontrei se é possível.
Eu tenho esta consulta MySQL:
INSERT INTO table (id,a,b,c,d,e,f,g) VALUES (1,2,3,4,5,6,7,8)
O ID do campo possui um "índice exclusivo", portanto não pode haver dois deles. Agora, se o mesmo ID já estiver presente no banco de dados, eu gostaria de atualizá-lo. Mas realmente preciso especificar todos esses campos novamente, como:
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)
Eu especifiquei tudo que já está na inserção ...
Uma observação extra, eu gostaria de usar a solução alternativa para obter o ID!
id=LAST_INSERT_ID(id)
Espero que alguém possa me dizer qual é a maneira mais eficiente.
a=VALUES(a), b=VALUES(b), ...
é o caminho que você precisa seguir. É assim que faço em todas as minhasINSERT ON DUPLICATE KEY UPDATE
declarações.