簡介:觸發器是由mysql的基本命令事件來觸發某種特定操作,這些基本命令由增,刪,改操作等事件來觸發某些特定操作。滿足觸發器的觸發條件
時,數據庫系統就會自動執行觸發器中定義的程序語句,可以令某些操作之間的一致性得到協調。
一:創建mysql觸發器
在mysql中創建只有一條執行語句的觸發器的形式如下。
create trigger 觸發器名稱 before|after 觸發事件
on 表名 for each row 執行語句;
具體參數說明:
a:觸發器名---指定要創建的觸發器的名稱
b:參數before|after指定觸發器執行的時間,before指在觸發事件之前執行觸發語句,after指在觸發事件之后執行觸發語句。
c:觸發事件參數指定數據庫操作觸發條件,包括insert,update,delete
d:表名----指觸發時間操作的表
e:for each row表示任何一條記錄上的操作滿足觸發事件都會觸發該觸發器。
f:執行語句指觸發器被觸發后執行的語句。
例如:
創建一個觸發器,當在student表中執行插入操作前,向timelog表中自動插入系統當前時間
create trigger auto_save_ime before insert on student
for each row
insert into timelog(save_time) values(now());
時,數據庫系統就會自動執行觸發器中定義的程序語句,可以令某些操作之間的一致性得到協調。
一:創建mysql觸發器
在mysql中創建只有一條執行語句的觸發器的形式如下。
create trigger 觸發器名稱 before|after 觸發事件
on 表名 for each row 執行語句;
具體參數說明:
a:觸發器名---指定要創建的觸發器的名稱
b:參數before|after指定觸發器執行的時間,before指在觸發事件之前執行觸發語句,after指在觸發事件之后執行觸發語句。
c:觸發事件參數指定數據庫操作觸發條件,包括insert,update,delete
d:表名----指觸發時間操作的表
e:for each row表示任何一條記錄上的操作滿足觸發事件都會觸發該觸發器。
f:執行語句指觸發器被觸發后執行的語句。
例如:
創建一個觸發器,當在student表中執行插入操作前,向timelog表中自動插入系統當前時間
create trigger auto_save_ime before insert on student
for each row
insert into timelog(save_time) values(now());
二:創建多條執行語句的觸發器
創建語句為:
create trigger 觸發器名 before|after 觸發事件
on 表名 for each row
begin
執行語句
end
將要執行的多條語句放入begin...end之間,多條語句之間需要用“;”隔開。
注意:一個表在相同的時間和相同的觸發事件只能創建一個觸發器。
創建語句為:
create trigger 觸發器名 before|after 觸發事件
on 表名 for each row
begin
執行語句
end
將要執行的多條語句放入begin...end之間,多條語句之間需要用“;”隔開。
注意:一個表在相同的時間和相同的觸發事件只能創建一個觸發器。
三:在行級觸發器中,用:new 和:old(稱為偽記錄)來訪問數據變更前后的值。
但要注意,INSERT語句插入一條新記錄,
所以沒有:old記錄,而DELETE語句刪除掉一條已經存在的記錄,
所以沒有:new記錄。UPDATE語句既有:old記錄,也有:new記錄,分別代表修改前后的記錄
但要注意,INSERT語句插入一條新記錄,
所以沒有:old記錄,而DELETE語句刪除掉一條已經存在的記錄,
所以沒有:new記錄。UPDATE語句既有:old記錄,也有:new記錄,分別代表修改前后的記錄
