使用if else条件触发

7lrncoxx  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(270)

我是新手。我想在从我的 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;
7gyucuyw

7gyucuyw1#

update语法不包括into关键字。

tjrkku2a

tjrkku2a2#

请检查以下更新的查询是否有效。

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(update)列表中删除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;

相关问题