Триггер с условием if else - PullRequest
       1

Триггер с условием if else

0 голосов
/ 13 сентября 2018

Я новичок в триггере MySQL. Я хочу сделать триггер, который перед выполнением обновления из моей таблицы emp_audit сначала проверит, существует ли уже empno из моей таблицы сотрудников. Если оно существует, то сделайте обновление, иначе ничего не сделайте.

Я сталкиваюсь со следующей ошибкой:

Ошибка 1064

Код:

DELIMITER $$

CREATE TRIGGER before_emp_audit_update
BEFORE UPDATE ON emp_audit
FOR EACH ROW BEGIN 

  IF (SELECT COUNT(*) FROM employees WHERE empno = NEW.empno) = 1
  THEN
  UPDATE INTO emp_audit
  SET ACTION = 'update',
  empno = NEW.empno,
  lastname = NEW.lastname,
  changedat = NOW();

  END IF;
END$$
DELIMITER;

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Синтаксис UPDATE не включает ключевое слово INTO.

0 голосов
/ 13 сентября 2018

Пожалуйста, проверьте, работает ли ниже обновленный запрос.

DELIMITER $$

CREATE TRIGGER before_emp_audit_update
BEFORE UPDATE ON emp_audit
FOR EACH ROW BEGIN 

  IF (SELECT COUNT(*) FROM employees WHERE empno = NEW.empno) = 1
  THEN
  UPDATE INTO emp_audit
  SET ACTION = 'update',
  empno = NEW.empno,
  lastname = NEW.lastname,
  changedat = NOW()
  WHERE empno = NEW.empno;

  END IF;
END$$
DELIMITER;

Я думаю, вы даже можете удалить empno из вашего списка SET (обновление) и попробовать следующий запрос,

DELIMITER $$

CREATE TRIGGER before_emp_audit_update
BEFORE UPDATE ON emp_audit
FOR EACH ROW BEGIN 

  IF (SELECT COUNT(*) FROM employees WHERE empno = NEW.empno) = 1
  THEN
  UPDATE INTO emp_audit
  SET ACTION = 'update',
  lastname = NEW.lastname,
  changedat = NOW()
  WHERE empno = NEW.empno;

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