INSERT INTO TABLE
SELECT value_for_column1, value_for_column2, ...
FROM wherever
WHERE your_special_condition
Jika tidak ada baris yang dikembalikan dari pilihan (karena kondisi khusus Anda salah) tidak ada penyisipan yang terjadi.
Menggunakan skema Anda dari pertanyaan (dengan asumsi id
Anda kolomnya adalah auto_increment
):
insert into orders (product_id, qty)
select 2, 20
where (SELECT qty_on_hand FROM products WHERE id = 2) > 20;
Ini tidak akan menyisipkan baris jika tidak ada stok yang cukup, jika tidak maka akan membuat baris pesanan.
Ide bagus btw!