Instruções INSERT condicionais no MySQL
Pergunta: É viável executar uma operação INSERT condicionalmente, semelhante a um Declaração IF?
Elaboração:
Suponha que precisamos fazer um pedido para 20 itens com ID do produto 2. Para garantir estoque suficiente, primeiro verificamos a quantidade disponível:
SELECT IF( ( SELECT SUM(qty) FROM orders WHERE product_id = 2 ) 20Se o resultado for verdadeiro, executamos a consulta INSERT. No entanto, essa abordagem é suscetível a problemas de simultaneidade. Vários pedidos simultâneos podem resultar em vendas excessivas.
Resposta:
Sim, instruções INSERT condicionais são possíveis usando a seguinte sintaxe:
INSERT INTO TABLE SELECT value_for_column1, value_for_column2, ... FROM wherever WHERE your_special_conditionSe a instrução SELECT não retornar nenhuma linha (ou seja, a condição especial é falsa), nenhuma inserção ocorrerá.
Exemplo:
Para o esquema fornecido:
products: id, qty_on_hand orders: id, product_id, qtyinsert into orders (product_id, qty) select 2, 20 where (SELECT qty_on_hand FROM products WHERE id = 2) > 20;Esta consulta só inserirá uma linha se houver estoque suficiente disponível. Caso contrário, não executará a inserção.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3