create trigger trigger_name trigger_time trigger_event
on table_name
for each row
begin
...end;
我們來更詳細的檢查上面的語法。
[trigger time]_[table name]_[trigger event],例如before_employees_update。
1.首先建立名為 fruit 的資料庫,然後在 fruit 的資料庫中建立fruit_price表和fruitchange_log表。
2.1建立fruit_price表
use fruit;
create
table fruit_price (
fruit_id int (10) ,
fruit_name varchar(50) not
null,
fruit_price decimalnot null
);
2.2 插入資料:
3.建立fruitchange_log表:
use food;
create
table fruitchange_log (
fruit_name varchar(50) not
null,
action
varchar(50) not
null,
change_date datetime not
null
);
4.建立觸發器,當更改fruit_price表時,先備份要修改的fruit_price的資訊到fruitchange_log表中。
delimiter $$
create
trigger before_fruit_price_update
before
update
on fruit_price
foreach
rowbegin
insert
into fruitchange_log
setaction = 'update',
fruit_name = old.fruit_name ,
fruit_price = old.fruit_price,
changedate = now();
end$$
delimiter ;
說明:
1.在觸發器的主體中,使用old關鍵字來訪問受觸發器影響的行的fruit_name和fruit_price列。
2.在為insert定義的觸發器中,僅能使用new關鍵字。不能使用old關鍵字。但是,在為delete定義的觸發器中,沒有新行,因此只能使用old關鍵字。在update觸發器中,old是指更新前的行,而new是更新後的行。
5. 檢視觸發器。語句如下:
6. 修改fruit_price表的 資料,檢視修改是否生效。
7. 檢視fruitchange_log表的 資料,來驗證觸發器是否生效。
看圖可知,fruitchange_log表中多了一行資料,正是修改之前的fruit_ptice表的資料,這說明建立的觸發器有效!
待更新……
待更新……
mysql觸發器覆蓋標準sql中定義的所有功能。 但是,在應用程式中使用它們之前也有一些限制。
mysql 觸發器基礎
mysql的觸發器 一般用在需要有資料統計的時候,如果每次請求都要對一張表的資料進行統計,可以考慮觸發器,如 乙個公司的 雇員資訊表中,有使用者名稱 和 使用者的工資字段,現在需要在前端頁面上展示,總的雇員數,和總的工資數,如果每請求一次都要去使用 mysql的聚合函式 sum 和 count 其實...
MySQL基礎 觸發器
觸發器 trigger 監視某種情況,並觸發某種操作,它的執行是由事件來觸發的,例如當對乙個表進行操作 insert,delete,update 時就會啟用它執行。觸發器經常用於加強資料的完整性約束和業務規則等。觸發器建立語法四要素 1.監視地點 table 2.監視事件 insert update...
mysql 基礎 觸發器
簡單的說,就是一張表發生了某件事 插入 刪除 更新操作 然後自動觸發了預先編寫好的若干條sql語句的執行 特點 觸發事件的操作和觸發器裡的sql語句是乙個事務操作,具有原子性,要麼全部執行,要麼都不執行 作用 保證資料的完整性,起到約束的作用 觸發器是隱藏到mysql後台執行的功能。由於觸發器是隱藏...