mysql觸發器 for each row解釋

create trigger mytrigger alert insert on t_a for each row

begin

        insert into t_b

            set name=new.name,

            set number=new number;

程序體或者是

    set @name=new.name;

    set @number=new.number;

    insert into t_b (name,number) values (@name,@number);

end


foreachrow每行受影響,觸發器都執行,叫行級觸發器。

oracle觸發器中分行級觸發器和語句級觸發器,可不寫foreachrow,無論影響多少行都只執行一次。

mysql不支持語句觸發器,所以必須寫foreachrow;

觸發器的old和new

after觸發器—是在記錄操縱之後觸發,是先完成數據的增刪改,再觸發,觸發的語句晚於監視的增刪改操作,無法影響前面的增刪改動作

before觸發器—是在記錄操縱之前觸發,是先完成觸發,再增刪改,觸發的語句先於監視的增刪改,我們就有機會判斷,修改即將發生的操作,如:我們在觸發之前需要判斷new值和old值的大小或關係,如果滿足要求就觸發,不通過就修改再觸發;如:表之間定義的有外鍵,在刪除主鍵時,必須要先刪除外鍵表,這時就有先後之分,這裏before相當於設置了斷點,我們可以處理刪除外鍵。

對於INSERT語句, 只有NEW是合法的;

對於DELETE語句,只有OLD才合法;

對於UPDATE語句,NEW、OLD可以同時使用。


發佈了36 篇原創文章 · 獲贊 15 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章