成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Mysql高級(jí)之觸發(fā)器(trigger)

aaron / 1980人閱讀

觸發(fā)器是一類特殊的事務(wù) ,可以監(jiān)視某種數(shù)據(jù)操作(insert/update/delete),并觸發(fā)相關(guān)操作(insert/update/delete)。

看以下事件:

完成下單與減少庫(kù)存的邏輯

Insert into o (gid,num) values (2,3); // 插入語(yǔ)句

Update g set goods_num = goods_num - 3 where id = 2;// 更新過程

這兩個(gè)邏輯可以看成一個(gè)整體,或者說, insert ---> 引來(lái) update

用觸發(fā)器可以解決上述問題.

我們可以監(jiān)視某表的變化,當(dāng)發(fā)生某種變化時(shí),觸發(fā)某個(gè)操作.

創(chuàng)建觸發(fā)器的語(yǔ)法

Create trigger triggerName

After/before insert/update/delete on 表名

For each row #這句話是固定的

Begin

Sql語(yǔ)句; # 一句或多句,insert/update/delete范圍內(nèi)

End;

刪除觸發(fā)器的語(yǔ)法:

Drop trigger 觸發(fā)器名

查看觸發(fā)器

Show triggers

如何在觸發(fā)器引用行的值

對(duì)于insert而言, 新增的行 用new 來(lái)表示,

行中的每一列的值 ,用new.列名來(lái)表示.

對(duì)于 delete來(lái)說, 原本有一行,后來(lái)被刪除,

想引用被刪除的這一行,用old,來(lái)表示, old.列名,就可以引用被刪行中的值.

對(duì)于update來(lái)說,

被修改的行,

修改前的數(shù)據(jù) ,用 old來(lái)表示, old.列名引用被修改之前行中的值

修改后的數(shù)據(jù),用new 來(lái)表示, new.列名引用被修改之后行中的值

觸發(fā)器里after 和before的區(qū)別

After 是先完成數(shù)據(jù)的增,刪,改再觸發(fā),

觸發(fā)的語(yǔ)句晚于監(jiān)視的增,刪,改,無(wú)法影響前面的增刪改動(dòng)作.

Before是先完成觸發(fā),再增刪改,

觸發(fā)的語(yǔ)句先于監(jiān)視的增,刪,改發(fā)生,我們有機(jī)會(huì)判斷,修改即將發(fā)生的操作.

典型案例:

對(duì)于所下訂單,進(jìn)行判斷,如果訂單的數(shù)量 > 5 ,就認(rèn)為是惡意訂單,

強(qiáng)制把所訂的商品數(shù)量改成5

查看哪些觸發(fā)器:

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22722.html

相關(guān)文章

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<