在原有的 AFTER DELETE 的触发器添加上述触发器提示There is no NEW row in on DELETE trigger,这是为什么
时间: 2024-04-10 18:34:58 浏览: 346
在MySQL的触发器中,AFTER DELETE触发器是在删除操作完成后触发的。由于删除操作已经完成,所以在AFTER DELETE触发器中无法通过NEW关键字获取已删除的行的值,只能通过OLD关键字获取被删除行的值。
因此,在AFTER DELETE触发器中使用NEW关键字会导致错误提示"There is no NEW row in on DELETE trigger",因为MySQL无法提供已删除的行的信息。
如果您希望在删除操作后执行某些逻辑或更新相关表的数据,可以使用OLD关键字来引用已删除的行的值。以下是修改后的触发器示例:
```sql
-- 修改触发器
CREATE TRIGGER update_classCount AFTER DELETE ON student
FOR EACH ROW
BEGIN
-- 更新class表中classCount字段
UPDATE class
SET classCount = (
SELECT COUNT(*) FROM student WHERE classId = OLD.classId
)
WHERE classId = OLD.classId;
END;
```
在上述触发器中,使用OLD.classId来引用已删除的行的classId值,并进行相应的更新操作。
请注意,在使用AFTER DELETE触发器时,只能使用OLD关键字来引用已删除的行的值。如果需要在删除操作前执行某些逻辑,请使用BEFORE DELETE触发器。
希望以上解释能够解决您的疑问。如果您还有其他问题,请随时提问。
阅读全文
相关推荐
















