INSERT INTO TABLE
SELECT value_for_column1, value_for_column2, ...
FROM wherever
WHERE your_special_condition
Jeśli żadne wiersze nie zostaną zwrócone z wyboru (ponieważ twój specjalny warunek jest fałszywy), wstawienie nie nastąpi.
Korzystanie ze schematu z pytania (zakładając Twój id
kolumna to auto_increment
):
insert into orders (product_id, qty)
select 2, 20
where (SELECT qty_on_hand FROM products WHERE id = 2) > 20;
Nie wstawi to żadnych wierszy, jeśli nie ma wystarczającej ilości zapasów, w przeciwnym razie utworzy wiersz zamówienia.
Przy okazji fajny pomysł!