J'ai besoin d'une procédure stockée qui AUTOMATIQUEMENT supprime à chaque fois la ligne, où dans la table Exemple dans les tableaux ci-dessous:
table: La condition est vraie: après la ligne supprimée: Ma tentative est: (ne fonctionne pas) paym
les deux colonnes table1
et table2 code > ne sont pas vides.
paym
CREATE PROCEDURE DeleteRow
BEGIN
DELETE
FROM
paym WHERE table1 and table2 IS NOT NULL ;
END;
ID username table1 Table2
+-------+-------------+-------------+-----------+
| 2 | Alex | Null | Null |
+-------+-------------+-------------+-----------+
ID username table1 Table2
+-------+-------------+-------------+-----------+
| 1 | John | Value | Value |
+-------+-------------+-------------+-----------+
| 2 | Alex | Null | Null |
+-------+-------------+-------------+-----------+
4 Réponses :
le code doit lire la table n'est pas nulle et la table 2 n'est pas nulle, car vous devez avoir une condition après une instruction and.
Votre logique est ici, mais la syntaxe est incorrecte.
Après chaque champ de la clause WHERE, vous devez spécifier une condition, comme ceci:
CREATE PROCEDURE DeleteRow BEGIN DELETE FROM paym WHERE table1 IS NOT NULL AND table2 IS NOT NULL ; END;
Vous pouvez également utiliser COALESCE
comme un hack au cas où vous souhaitez vérifier plusieurs colonnes pour NULL
CREATE PROCEDURE DeleteRow BEGIN DELETE FROM paym WHERE COALESCE(table1,table2) IS NOT NULL; END;
CREATE PROCEDURE DeleteRow BEGIN DELETE FROM paym WHERE table1 IS NOT NULL AND table2 IS NOT NULL ; END;