Declaraciones INSERT condicionales en MySQL
Pregunta: ¿Es factible realizar una operación INSERT de forma condicional, similar a una ¿Declaración IF?
Elaboración:
Supongamos que necesitamos realizar un pedido de 20 artículos con ID de producto 2. Para garantizar existencias suficientes, primero verificamos la cantidad disponible :
SELECT IF( ( SELECT SUM(qty) FROM orders WHERE product_id = 2 ) 20Si el resultado es verdadero ejecutamos la consulta INSERT. Sin embargo, este enfoque es susceptible a problemas de concurrencia. Múltiples pedidos simultáneos pueden resultar en sobreventa.
Respuesta:
Sí, las declaraciones INSERT condicionales son posibles usando la siguiente sintaxis:
INSERT INTO TABLE SELECT value_for_column1, value_for_column2, ... FROM wherever WHERE your_special_conditionSi la instrucción SELECT no devuelve filas (es decir, la condición especial es falsa), no se produce ninguna inserción.
Ejemplo:
Para el esquema dado:
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 solo insertará una fila si hay suficiente stock disponible. De lo contrario, no ejecutará la inserción.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3