我是MySQL触发器的新手。我想触发一个触发,在从我的emp_audit
表进行更新之前,将首先检查我的employee表中的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;
答案 0 :(得分: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;
答案 1 :(得分:0)
UPDATE语法不包含INTO关键字。