Stored-процедура для удаления строки, где выполняется это условие True: - PullRequest
2 голосов
/ 11 апреля 2019

Мне нужна хранимая процедура, которая АВТОМАТИЧЕСКИ * удаляет строку каждый раз, где в таблице paym оба столбца table1 и table2 не пусты.

Пример в таблицах ниже: таблица: paym

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

Условие истинно: после удаленной строки:

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

Моя попытка: (не работает)

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

Ответы [ 4 ]

2 голосов
/ 11 апреля 2019

Ваша логика здесь, но синтаксис неправильный.

После каждого поля в предложении WHERE вы должны указать условие, например:

 CREATE PROCEDURE DeleteRow
         BEGIN
               DELETE
         FROM
             paym WHERE table1 IS NOT NULL AND table2 IS NOT NULL ;
             END;
2 голосов
/ 11 апреля 2019

Вы также можете использовать CONCAT в качестве хака в случае, если вы хотите проверить несколько столбцов для NULL

CREATE PROCEDURE DeleteRow
             BEGIN
                   DELETE
             FROM
                 paym WHERE CONCAT(table1,table2) IS NOT NULL;
                 END;
1 голос
/ 11 апреля 2019
 CREATE PROCEDURE DeleteRow
         BEGIN
               DELETE
         FROM
             paym WHERE table1 IS NOT NULL AND table2 IS NOT NULL ;
             END;
0 голосов
/ 11 апреля 2019

код должен прочитать таблицу, не является нулевым, и таблица 2 не является нулевым, так как вам нужно иметь условие после оператора и.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...