"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > As instruções INSERT do MySQL podem ser condicionais?

As instruções INSERT do MySQL podem ser condicionais?

Publicado em 2024-11-11
Navegar:292

Can MySQL INSERT Statements Be Made Conditional?

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  )   20
    

Se 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_condition

Se 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, qty
insert 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.

Tutorial mais recente Mais>

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