在寫觸發器時,經常會用到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 ;
新聞熱點
疑難解答