sql >> Base de Datos >  >> RDS >> Mysql

MySQL INSERT IF (declaraciones if personalizadas)

INSERT INTO TABLE
SELECT value_for_column1, value_for_column2, ...
FROM wherever
WHERE your_special_condition

Si no se devuelven filas de la selección (porque su condición especial es falsa), no ocurre ninguna inserción.

Usando su esquema de la pregunta (asumiendo su id la columna es auto_increment ):

insert into orders (product_id, qty)
select 2, 20
where (SELECT qty_on_hand FROM products WHERE id = 2) > 20;

Esto no insertará filas si no hay suficiente stock disponible; de ​​lo contrario, creará la fila de pedido.

¡Buena idea por cierto!