Como executar um UPSERT para que eu possa usar valores novos e antigos na parte de atualização
Exemplo estúpido, mas simples: suponha que eu tenha uma tabela 'Item' onde guardo os totais dos itens que recebe
Item_Name Items_In_Stock
O nome do item é a chave primária aqui. Como obter o seguinte sempre que receber o item A na quantidade X.
Se o item não existir, insiro um novo registro para o Item A e defino os itens em estoque como X e, se houver um registro em que os itens em estoque sejam Y, o novo valor em itens em estoque será (X + Y)
INSERT INTO `item`
(`item_name`, items_in_stock)
VALUES( 'A', 27)
ON DUPLICATE KEY UPDATE
`new_items_count` = 27 + (SELECT items_in_stock where item_name = 'A' )
Meu problema é que tenho várias colunas na minha tabela real. É uma boa ideia escrever várias instruções de seleção na parte de atualização?
Claro que posso fazer isso em código, mas existe uma maneira melhor?