使用if else条件触发

问题描述 投票:0回答:2

我是MySQL触发器的新手。我想做一个触发器,在我从emp_audit表进行更新之前,首先检查来自我的employees表的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;
mysql triggers
2个回答
0
投票

UPDATE语法不包含INTO关键字。


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;

我想,您甚至可以从您的SET(更新)列表中删除empno并尝试以下查询,

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;
© www.soinside.com 2019 - 2024. All rights reserved.