INSERT INTO TABLE
SELECT value_for_column1, value_for_column2, ...
FROM wherever
WHERE your_special_condition
Pokud nejsou vráceny žádné řádky z výběru (protože vaše speciální podmínka je nepravdivá), nedojde k vložení.
Pomocí schématu z otázky (za předpokladu, že vaše id
sloupec je auto_increment
):
insert into orders (product_id, qty)
select 2, 20
where (SELECT qty_on_hand FROM products WHERE id = 2) > 20;
Pokud není k dispozici dostatek zásob, nevloží se žádné řádky, jinak se vytvoří řádek objednávky.
Pěkný nápad btw!