mysql高级 tigger触发器 --[1]
生活随笔
收集整理的這篇文章主要介紹了
mysql高级 tigger触发器 --[1]
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
觸發(fā)器:
很方便,在商城中最常見。,你可以用兩條語(yǔ)句,也可以用一個(gè)觸發(fā)器
場(chǎng)景:
表中, 一個(gè)訂單產(chǎn)生,然后庫(kù)存減去數(shù)量。
表中,有關(guān)聯(lián)的兩個(gè)表,可在訂單生成的時(shí)候判斷客戶的錢是否夠
當(dāng)有訂單的時(shí)候,及時(shí)的向管理員發(fā)送一個(gè)信息。也可以用
英語(yǔ):tigger ?扳機(jī);槍擊;引線;觸發(fā);引起?
一個(gè)表改變可以改變n個(gè)表。?
監(jiān)視->觸發(fā)
創(chuàng)建試驗(yà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 | +-----+------+--------+創(chuàng)建觸發(fā)器:
-- 如果買了,向ordz表添加數(shù)據(jù), 則需要另外再寫一條向goods表中減少 -- 但是創(chuàng)建觸發(fā)器就方便了create trigger t1 after insert on goods for each row begin update goods set num = num-2 where gid = 1; end; -- 報(bào)錯(cuò)!!! 兩個(gè)分號(hào) 最外層用 $ 符號(hào)做分隔符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. 如果訂單多了怎么辦?
總結(jié)
以上是生活随笔為你收集整理的mysql高级 tigger触发器 --[1]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 职场上个人价值的三个驱动力
- 下一篇: MySQL 怎么保证备份数据的一致性?