INSERT INTO TABLE
SELECT value_for_column1, value_for_column2, ...
FROM wherever
WHERE your_special_condition
यदि चयन से कोई पंक्तियाँ नहीं लौटाई जाती हैं (क्योंकि आपकी विशेष स्थिति गलत है) तो कोई प्रविष्टि नहीं होती है।
प्रश्न से अपने स्कीमा का उपयोग करना (अपना id
मानकर कॉलम है auto_increment
):
insert into orders (product_id, qty)
select 2, 20
where (SELECT qty_on_hand FROM products WHERE id = 2) > 20;
यदि हाथ में पर्याप्त स्टॉक नहीं है तो यह कोई पंक्ति नहीं डालेगा, अन्यथा यह ऑर्डर पंक्ति बना देगा।
अच्छा विचार बीटीडब्ल्यू!