mysql高级 tigger触发器 --[1]
生活随笔
收集整理的這篇文章主要介紹了
mysql高级 tigger触发器 --[1]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
觸發器:
很方便,在商城中最常見。,你可以用兩條語句,也可以用一個觸發器
場景:
表中, 一個訂單產生,然后庫存減去數量。
表中,有關聯的兩個表,可在訂單生成的時候判斷客戶的錢是否夠
當有訂單的時候,及時的向管理員發送一個信息。也可以用
英語:tigger ?扳機;槍擊;引線;觸發;引起?
一個表改變可以改變n個表。?
監視->觸發
創建試驗表:
create table goods(gid int auto_increment primary key,name varchar(20),number smallint ); create table ordz(oid int auto_increment primary key,gid int,much int );insert into goods values(1,'cat','20'); insert into goods values(2,'dog','20'); insert into goods values(3,'pig','20');+-----+------+--------+ | gid | name | number | +-----+------+--------+ | 1 | cat | 20 | | 2 | dog | 20 | | 3 | pig | 20 | +-----+------+--------+創建觸發器:
-- 如果買了,向ordz表添加數據, 則需要另外再寫一條向goods表中減少 -- 但是創建觸發器就方便了create trigger t1 after insert on goods for each row begin update goods set num = num-2 where gid = 1; end; -- 報錯!!! 兩個分號 最外層用 $ 符號做分隔符delimiter $ create trigger t1 after insert on ordz for each row begin update goods set number = number-2 where gid = 1; end $show triggers \G *************************** 1. row ***************************Trigger: t1Event: INSERTTable: ordz Statement: beginupdate goods set number = number-2 where gid = 1; endTiming: AFTERCreated: NULLsql_mode:Definer: root@localhost 1 row in set (0.01 sec)插入ordz表 訂單:
insert into ordz values(1,1,2);+-----+------+--------+ | gid | name | number | +-----+------+--------+ | 1 | cat | 18 | | 2 | dog | 20 | | 3 | pig | 20 | +-----+------+--------+問題: ?
1. 都減少了貓兩只
2. 如果訂單多了怎么辦?
總結
以上是生活随笔為你收集整理的mysql高级 tigger触发器 --[1]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 职场上个人价值的三个驱动力
- 下一篇: 自学php看什么视频,PHP自学要多久?