Triggers

      在〈Triggers〉中尚無留言

何謂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$$

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *