日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql高级 tigger触发器 --[2]

發(fā)布時間:2023/12/14 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。