Как исправить ошибку синтаксиса в функции create MySQL 5.6? [Дубликат]

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

1
задан Bill Karwin 4 November 2013 в 20:30
поделиться

2 ответа

Вам совсем не нужно DELIMITER $$. Это команда mysql, встроенная в команду . Встроенные клиенты не распознаются парсером SQL.

Вы можете просто выполнить оператор CREATE TRIGGER как единый оператор, и вам не нужно иметь разделитель в конце инструкции. Разделители важны только для интерфейсов, поддерживающих несколько операторов (например, клиент mysql).

phpMyAdmin также разрешает несколько операторов, поэтому вам нужно установить разделитель, но это делается с помощью интерфейса пользовательского интерфейса, а не DELIMITER. См. Процедуры сохранения в phpMyAdmin

12
ответ дан Community 19 August 2018 в 09:08
поделиться

Выполните его прямо в PhpmyAdmin и удалите один избыточный END

DELIMITER $$

CREATE TRIGGER FP_PAGO_AU AFTER UPDATE ON FORMA_PGTO
FOR EACH ROW
BEGIN

    declare rec_count integer;
    declare pg_count integer;
    declare cp_pago integer;

    select count(*) from forma_pgto fp where fp.id_cpagar=new.id_cpagar into rec_count;
    select count(pago) from forma_pgto f where f.id_cpagar=new.id_cpagar and f.pago=1 into pg_count;

    /* Se todas parcelas estao pagas, entao setar conta paga */
    if (rec_count = pg_count) then
        update cpagar c set c.pago=1 where c.id=new.id_cpagar;
    /* Senao */
    else
        /* Se CPAGAR.PAGO = 1, recebe 0 */
        select cpg.pago from cpagar cpg where cpg.id=new.id_cpagar into cp_pago;
        if (cp_pago = 1) then /* Se cp_pago = 1 */
            update cpagar set pago=0 where id=new.id_cpagar;
        end if;
    end if;

END $$

DELIMITER ;
2
ответ дан juergen d 19 August 2018 в 09:08
поделиться
  • 1
    В самом деле. У этого есть дополнительный КОНЕЦ. – trebew 4 November 2013 в 19:15
Другие вопросы по тегам:

Похожие вопросы: