Souvent, vous devrez peut-être insérer des données dans une table uniquement si certaines conditions sont remplies. Bien que les procédures stockées offrent un moyen d'y parvenir, explorons comment effectuer des insertions conditionnelles directement dans vos requêtes SQL.
Pour insérer des données de manière conditionnelle, vous pouvez utiliser la syntaxe suivante :
INSERT INTO TABLE SELECT value_for_column1, value_for_column2, ... FROM wherever WHERE your_special_condition
Si la sous-requête de la clause WHERE ne renvoie aucune ligne car la condition n'est pas remplie, aucune insertion n'a lieu.
Exemple :
Considérez les tableaux suivants :
CREATE TABLE products (id INT PRIMARY KEY AUTO_INCREMENT, qty_on_hand INT); CREATE TABLE orders (id INT PRIMARY KEY AUTO_INCREMENT, product_id INT, qty INT);
Pour passer une commande de 20 poupées vaudou (ID produit 2), nous pouvons vérifier s'il y a suffisamment de stock disponible et insérer conditionnellement la commande comme suit :
INSERT INTO orders (product_id, qty) SELECT 2, 20 WHERE (SELECT qty_on_hand FROM products WHERE id = 2) > 20;
Si la quantité est la main est suffisante, la ligne de commande sera créée ; sinon, l'insertion n'aura pas lieu. Cette méthode permet d'atténuer les problèmes de concurrence en vérifiant la disponibilité des stocks et en exécutant l'insertion en une seule transaction.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!