Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL INSERT IF (instructions if personnalisées)

INSERT INTO TABLE
SELECT value_for_column1, value_for_column2, ...
FROM wherever
WHERE your_special_condition

Si aucune ligne n'est renvoyée de la sélection (parce que votre condition spéciale est fausse), aucune insertion ne se produit.

En utilisant votre schéma de la question (en supposant que votre id la colonne est auto_increment ):

insert into orders (product_id, qty)
select 2, 20
where (SELECT qty_on_hand FROM products WHERE id = 2) > 20;

Cela n'insérera aucune ligne s'il n'y a pas assez de stock disponible, sinon cela créera la ligne de commande.

Bonne idée d'ailleurs !