何謂Trigger
當記錄被修改, 新增時, 希望能觸發一些動作, 比如記錄是誰修改的, 修改的時間, 修改的IP, 就需使用triggers
建立Trigger
create trigger 名稱 時機 事件 on 表格名稱 for each row 敘述
時機 : before, after
事件 : insert, update, delete
敘述 : 要執行的工作
drop trigger if exists mj_employee_trigger; delimiter $$ create trigger mj_employee_trigger after insert on mj_employee for each row begin insert into emplog (message) values ("insert"); end$$ delimiter ;
上述trigger會儲存於mj_employee資料表裏的trigger元件中, 當新增一筆員工資料後, 就會自動執行此trigger裏的敘述. 此trigger無法手動被調用
OLD 與 NEW
在trigger裏, 可以使用new 或old 關鍵字取得未更改前的欄位或更改後的欄位值. 但insert不能使用old, delete不能使用new
在員工資料表中, 如果只需在調部門才記錄, 就可以在trigger中使用if, 如下
if old.deptno<> new.deptno then
insert into emplog (message) values(‘調部門’);
end if;
轉換大小寫
如果新增或修改時, 要將欄位的值都轉成大寫, 就需新增一個before trigger, 然後用set 改變欄位
begin
set new.fullname=upper(new.fullname);
set new.email=lower(new.email);
end$$