mysql觸發器 情景說明
1. mysql觸發器 情景說明
情景設定,如圖,當我們點選了購買,將會發生什麼?
現有如下兩張表
商品表編號(id)名稱(name)**(price)庫存(stock)
1f2戰鬥機10000100
2法拉利80070
3航空母艦500020
4三棲交通工具100050
訂單表編號(id)商品編號(tid)購買數量(num)下單時間(order_time)
我們現在要買5架f2戰鬥機,下乙個訂單,需要做什麼?
傳統的做法:
insert into ord(tid,num) values(1,5);
update traffic set stock = stock - 5 where id = 1;
新的方式:
我們可以使用觸發器,一觸即發!!
2.mysql觸發器使用:trigger
2.1 觸發器四要素:
地點:(表,table),
監視的事件:(insert,delete,update)
時間:(before/after)
觸發的事件:(insert,delete,update)
2.2建立觸發器的語法:
注意:在寫觸發器之前,要更改的mysql的分隔符。
監視事件和觸發事件之間如何傳遞值?
需求:現在我們要購買 10輛法拉利, 商品表裡的觸發器應該 這樣寫:
#商品表的觸發器
delimiter $
create triggter tg1
after //事件觸發在 下訂單之後
insert // 監視插入事件
on order // 監視 order訂單表
for each row
begin
update traffic set stock=stock- new,num where id= new id;
end $
在order表的操作:
insert into(tid,num) values(2,10);
以下分析均對於 order表而言
對於insert而言,
新舊關係
new表示是新插入的一行,
要引用其中的tid和num,如何引用?
new.tid
new.num
對於delete而言:
對於update而言
需求:先購買了10個輛法拉利,然後要把數量更改為5,寫出觸發器;
#商品表的觸發器
mysql> delimiter $
mysql> create trigger tg3
-> after
-> update
-> on ord
-> for each row
-> begin
-> update traffic set stock = stock + old.num - new.num where id = new.tid;
-> end $
[關於before]
有沒有before的情況。
after:在監視事件發生之後觸發的,觸發事件要晚於監視事件。
before:在監視事件發生之前觸發的,觸發事件要早於監視事件。
需求:若訂單數量超過10的話,就認為是惡意訂單,只讓其購買10個。
#商品表的觸發器
mysql> delimiter $
mysql> create trigger tg4
-> before
-> insert
-> on ord
-> for each row
-> begin
-> if new.num > 10 then
-> set new.num = 10;
-> end if;
-> update traffic set stock = stock - new.num where id = new.tid;
-> end $
3.觸發器應用場合
1.當向一張表中新增或刪除記錄時,需要在相關表中進行同步操作。
比如,當乙個訂單產生時,訂單所購的商品的庫存量相應減少。
2.當表上某列資料的值與其他表中的資料有聯絡時。
比如,當某客戶進行欠款消費,可以在生成訂單時通過設計觸發器判斷該客戶的累計欠款是否超出了最大限度。
3.當需要對某張表進行跟蹤時。
比如,當有新訂單產生時,需要及時通知相關人員進行處理,此時可以在訂單表上設計新增觸發器加以實現
觸發器 mysql觸發器
觸發器是一種特殊的儲存過程,它在插入 刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。和儲存過程一樣,很少使用。1 觸發器的作用 2 建立觸發器 建立測試環境 mysql create database test db query ok,1 row aff...
my sql 觸發器 mysql建立觸發器
首先,我們來了解一下什麼是觸發器,觸發器,就是在對一張表資料進行增 insert 刪 delete 改 update 的時候,為了保持資料的一致性,對別的表也要進行相應的資料修改。我們都知道mysql最後事務提交後,資料是會儲存到磁碟上的,那麼每次在insert,delete,update時候舊資料...
my sql 觸發器 MySQL檢視觸發器
檢視觸發器是指檢視資料庫中已經存在的觸發器的定義 狀態和語法資訊等。mysql 中檢視觸發器的方法包括 show triggers 語句和查詢 information schema 資料庫下的 triggers 資料表等。本節將詳細介紹這兩種檢視觸發器的方法。show triggers語句檢視觸發器...