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

0

Я новичок в 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;
Теги:
triggers

2 ответа

0
Лучший ответ

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

  • 0
    TNX для вас острые глаза ... это работает сейчас, спасибо
0

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

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 (update) и попробовать следующий запрос,

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;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню