Ошибка в запросе триггера SQL - PullRequest
0 голосов
/ 24 марта 2012

ОБНОВЛЕНИЕ:

DELIMITER $$
CREATE TRIGGER updateWage BEFORE UPDATE ON st_penalty
FOR EACH ROW BEGIN
  IF DAY({fw NOW( ) } ) = 1 THEN
     UPDATE st_penalty SET st_penalty.wage = (SELECT wage FROM staff WHERE staff.memId = st_penalty.memId);
  END IF;
END$$

Ошибка # 1064 - у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '' в строке 6.

1 Ответ

1 голос
/ 24 марта 2012

Согласно синтаксису , в триггерах MySql нет предложения WHEN.Кроме того, вы пропустили действия AFTER / BEFORE INSERT / UPDATE / DELETE.

Я бы написал ваш триггер примерно так (может не компилироваться):

CREATE TRIGGER updateWage AFTER UPDATE OR INSERT ON st_penalty
FOR EACH ROW
BEGIN
    IF (DAY(NOW()) = 1)
       UPDATE st_penalty SET st_penalty.wage = (SELECT wage FROM staff WHERE staff.memId = st_penalty.memId) WHERE st_penalty.ID = new.ID
END;

новая переменная содержитнедавно добавленные / обновленные значения для строки.Я бы порекомендовал вам прочитать больше по ссылке выше о написании триггеров.

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