INSERT INTO TABLE
SELECT value_for_column1, value_for_column2, ...
FROM wherever
WHERE your_special_condition
Als er geen rijen worden geretourneerd uit de selectie (omdat uw speciale voorwaarde onwaar is), vindt er geen invoeging plaats.
Uw schema uit de vraag gebruiken (ervan uitgaande dat uw id
kolom is auto_increment
):
insert into orders (product_id, qty)
select 2, 20
where (SELECT qty_on_hand FROM products WHERE id = 2) > 20;
Hiermee worden geen rijen ingevoegd als er niet genoeg voorraad is, anders wordt de orderrij gemaakt.
Leuk idee trouwens!