mysql高级 tigger触发器 --[2]
生活随笔
收集整理的這篇文章主要介紹了
mysql高级 tigger触发器 --[2]
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
接上個問題
number 和 gid 都傳什么?
insert語句是否可以被引用到?
insert 和 delete ?兩個狀態(tài)
delimiter $ create trigger t2 after insert on ordz for each row begin update goods set number = number-? where gid = ?; # 哪一個? 因為是新的所以字段為 new end $ 改為delimiter $ create trigger t2 after insert on ordz for each row begin update goods set number = number-new.much where gid = new.gid; # new end $ok,報錯了
大致意思是 ?不能同時監(jiān)視兩個一樣的 ? ?如 insert ?這種操作!!
查看已經有的: show triggers [\G]
刪掉已經有的 ?: ?drop trigger Name;
再次運行就可~~~
truncate ordz; # 不干擾視線 insert into ordz values(3,2,2)$ insert into ordz values(4,3,9)$ +-----+------+--------+ | gid | name | number | +-----+------+--------+ | 1 | cat | 14 | | 2 | dog | 18 | | 3 | pig | 11 | +-----+------+--------+ # 成功 合理的刪除了 改刪除的如果取消訂單?應該恢復! ?
比如第三個pig商品
create trigger t3 after delete on ordz for each row beginupdate goods set number = old.much+number where gid= old.gid; end$delete from ordz where oid = 4 $ # 刪除訂單+-----+------+--------+ | gid | name | number | +-----+------+--------+ | 1 | cat | 14 | | 2 | dog | 18 | | 3 | pig | 20 | +-----+------+--------+改數(shù)量: '' insert 'new' 'old' delete '' 'old' update 'new'三種狀態(tài)
比如改pig mysql> select * from goods; +-----+------+--------+ | gid | name | number | +-----+------+--------+ | 1 | cat | 14 | | 2 | dog | 18 | | 3 | pig | 11 | +-----+------+--------+ 3 rows in set (0.00 sec)mysql> select * from ordz;$ +-----+------+------+ | oid | gid | much | +-----+------+------+ | 1 | 1 | 2 | | 3 | 2 | 2 | | 4 | 3 | 9 | +-----+------+------+
create trigger t4 before update on ordz for each row begin update goods set number = number + old.much - new.much where gid = old.gid;# +(5-3) = 2 end$update ordz set much = 5 where oid=4$mysql> select * from goods$ +-----+------+--------+ | gid | name | number | +-----+------+--------+ | 1 | cat | 14 | | 2 | dog | 18 | | 3 | pig | 15 | +-----+------+--------+ 3 rows in set (0.00 sec)mysql> select * from ordz$ +-----+------+------+ | oid | gid | much | +-----+------+------+ | 1 | 1 | 2 | | 3 | 2 | 2 | | 4 | 3 | 5 | +-----+------+------+ 3 rows in set (0.00 sec)before 好像沒有區(qū)別?!!~~如果剩余3頭豬,但是客戶買了10頭豬,發(fā)生了什么情況!! 能否預防?
例: > update ordz set much = 30 where oid=4 ordz:+-----+------+------+| oid | gid | much |+-----+------+------+| 1 | 1 | 2 || 3 | 2 | 2 || 4 | 3 | 30 |+-----+------+------+ goods:+-----+------+--------+| gid | name | number |+-----+------+--------+| 1 | cat | 14 || 2 | dog | 18 || 3 | pig | -10 |+-----+------+--------+ # 能否在購買量超過庫存時,把much自動改為number 。 before 就體現(xiàn)出來了
爆倉了!!!
總結
以上是生活随笔為你收集整理的mysql高级 tigger触发器 --[2]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么把视频做成背景html,HTML5设
- 下一篇: MySQL廖雪峰的官方网站