2
votes

Procédure stockée pour supprimer la ligne où cette condition est vraie:

J'ai besoin d'une procédure stockée qui AUTOMATIQUEMENT supprime à chaque fois la ligne, où dans la table paym les deux colonnes table1 et table2 code > ne sont pas vides.

Exemple dans les tableaux ci-dessous: table: paym

CREATE PROCEDURE DeleteRow
        BEGIN
              DELETE
        FROM
            paym WHERE table1 and table2 IS NOT NULL ;
            END;

La condition est vraie: après la ligne supprimée:

 ID        username        table1        Table2  
+-------+-------------+-------------+-----------+
|   2   |  Alex       |  Null       |    Null   |
+-------+-------------+-------------+-----------+

Ma tentative est: (ne fonctionne pas)

 ID        username        table1        Table2  
+-------+-------------+-------------+-----------+
|   1   |  John       |  Value      |    Value  |
+-------+-------------+-------------+-----------+
|   2   |  Alex       |  Null       |    Null   |
+-------+-------------+-------------+-----------+


0 commentaires

4 Réponses :


0
votes

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.


0 commentaires

2
votes

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;


0 commentaires

2
votes

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;


0 commentaires

1
votes
 CREATE PROCEDURE DeleteRow
         BEGIN
               DELETE
         FROM
             paym WHERE table1 IS NOT NULL AND table2 IS NOT NULL ;
             END;

0 commentaires