INSERT INTO TABLE
SELECT value_for_column1, value_for_column2, ...
FROM wherever
WHERE your_special_condition
Om inga rader returneras från markeringen (eftersom ditt speciella villkor är falskt) sker ingen infogning.
Använda ditt schema från fråga (förutsatt ditt id
kolumnen är auto_increment
):
insert into orders (product_id, qty)
select 2, 20
where (SELECT qty_on_hand FROM products WHERE id = 2) > 20;
Detta kommer att infoga inga rader om det inte finns tillräckligt med lager till hands, annars skapas beställningsraden.
Bra idé btw!