mysql创建触发器时,after下不能使用old怎么办
时间: 2023-12-04 13:06:29 浏览: 93
mysql中触发器使用详解.docx
5星 · 资源好评率100%
在MySQL中,触发器的`AFTER`子句用于指定触发器应该在触发器事件之后执行。在`AFTER`子句中,您可以使用`NEW`关键字引用插入或更新的行的新值。但是,您不能使用`OLD`关键字引用旧行的值。如果您需要引用旧行的值,则需要使用`BEFORE`子句。
例如,以下是一个使用`BEFORE`子句的示例触发器,该触发器在更新`employees`表中的行时,将旧行的数据插入到`employees_audit`表中:
```
CREATE TRIGGER audit_employee_update
BEFORE UPDATE ON employees
FOR EACH ROW
INSERT INTO employees_audit
SET
action = 'update',
employeeNumber = OLD.employeeNumber,
lastname = OLD.lastname,
firstname = OLD.firstname,
extension = OLD.extension,
email = OLD.email,
officeCode = OLD.officeCode,
reportsTo = OLD.reportsTo,
jobTitle = OLD.jobTitle,
audit_date = NOW();
```
请注意,`BEFORE`子句在更新事件发生之前执行,并且您可以使用`OLD`关键字引用旧行的值。
希望这可以帮助您解决问题。
阅读全文