在写触发器时,经常会用到new和old这两个关键字,那它们的应用范围是怎样的呢?new只出现在insert和update时,old只出现在update和delete时。在insert时new表示新插入的行数据;update时new表示要替换的新数据行,old表示要被更改的原来的数据行;delete时old表示要被删除的数据。FOR EACH ROW 子句通知触发器每隔一行执行一次动作,而不是对整个表。BEFORE和AFTER的区别:在before insert和before update触发器中,可以对new进行修改;而在after insert和after update触发器中不能对new进行修改;before和after的触发器都不能对old进行修改。应用举例:在MySQL中,当我们每次对学生数据进行修改时,通过触发器去更新最后更新时间,其代码如下。
-- 本例中,登录用户为root,数据库名为School,修改表为student,每次触发修改最后更新时间updatetime,触发器名student_updateDELIMITER $$USE `School`$$DROP TRIGGER /*!50032 IF EXISTS */ `student_update`$$CREATE /*!50017 DEFINER = 'root'@'%' */ TRIGGER `student_update` BEFORE UPDATE ON `student` FOR EACH ROW BEGIN SET new.updatetime :=NOW(); END;$$DELIMITER ;
新闻热点
疑难解答