INSERT INTO TABLE
SELECT value_for_column1, value_for_column2, ...
FROM wherever
WHERE your_special_condition
選択から行が返されない場合(特別な条件がfalseであるため)、挿入は行われません。
質問のスキーマを使用する(id
を想定) 列はauto_increment
です ):
insert into orders (product_id, qty)
select 2, 20
where (SELECT qty_on_hand FROM products WHERE id = 2) > 20;
手元に十分な在庫がない場合、これは行を挿入しません。そうでない場合、注文行が作成されます。
いいアイデアです!