MySQL觸發器 trigger學習

觸發器:一類特殊的事物。可監視某種數據操作,并觸發相關操作(insert/update/delete)。表中的某些數據改變,希望同一時候能夠引起其他相關數據改變的需求。
作用:變化自己主動完畢某些語句查詢,加入程序的靈活性。
創建觸發器語法:
#delimiter $$ ?//默認情況下。delimiter是分號“;”,sql語句帶有;號結尾會報錯,沒到end就算到結束了,使用delimiter $$作用就是告訴mysql語句的結尾換成以$結束,對應使用end$$結束
create trigger test1  #觸發器名稱
(after/before) #觸發時間
(insert/update/delete)  #監視事件
on table #監視地點(表名)
for each row  #mysql必須加的 
beginsql1...sqlN
end。
#end$$
查詢已有trigger:show triggers
刪除已有trigger:drop trigger 觸發器名稱
new/old:
update觸發:old?代表更新前的記錄。new?代表更新后的記錄.
insert觸發:old?不能使用。new?代表插入的記錄.
delete觸發:old?代表刪除的記錄。

new?不能使用.


實例操作:
goods商品表和ord訂單表
CREATE TABLE goods(
`goods_id` INT(10),
`name` VARCHAR(20),
`num` SMALLINT(4)
)ENGINE=INNODB CHARSET=utf8
CREATE TABLE `ord`(
`oid` INT(10),
`gid` INT(10),
`much` INT(10)
)ENGINE=INNODB CHARSET=utf8
INSERT INTO goods VALUES
(1, 'cat', 26),(2, 'dog', 26),(3, 'pig', 26);
1、要求每下一個訂單,goods表中的庫存對應降低訂單的數量。

mysql> select * from goods
+----------+------+------+
| goods_id | name | num |
+----------+------+------+
| 1 | cat | 26 |
| 2 | dog |?26|
| 3 | pig | 26 |
+----------+------+------+
3 rows in set (0.00 sec)
mysql> select * from ord;
Empty set (0.00 sec)

#創建觸發器test1
DELIMITER $$
CREATE TRIGGER test1
AFTER
INSERT
ON `ord`
FOR EACH ROW
BEGIN
UPDATE goods SET num= num - new.much WHERE goods_id = new.gid;
END$$

mysql> CREATE TRIGGER test1
-> AFTER
-> INSERT
-> ON `ord`
-> FOR EACH ROW
-> BEGIN
-> UPDATE goods SET num= num - new.much WHERE goods_id = new.gid;
-> END$$
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO `ord` VALUES (1, 2, 2)$$
Query OK, 1 row affected (0.03 sec)
mysql> select * from ord$$
+------+------+------+
| oid | gid | much |
+------+------+------+
| 1 | 2 | 2 |
+------+------+------+
1 row in set (0.00 sec)
mysql> select * from goods$$
+----------+------+------+
| goods_id | name | num |
+----------+------+------+
| 1 | cat | 26 |
| 2 | dog |?24|
| 3 | pig | 26 |
+----------+------+------+
3 rows in set (0.00 sec)
goods表里面的dog由26變成24

2、用戶取消訂單后商品庫存訂單的商品數要正常入庫。

下面僅僅寫觸發器trigger,操作過程不寫太多比較亂。

#觸發器test2
CREATE TRIGGER test2
AFTER
DELETE
ON `ord`
FOR EACH ROW
BEGIN
UPDATE goods SET num = num + old.much WHERE goods_id = old.gid;
END $$ 

3、用戶更新訂單的時候。商品庫存要依據訂單的數量正常更新。
#觸發器test3
CREATE TRIGGER test3
AFTER
UPDATE
ON `ord`
FOR EACH ROW
BEGIN
UPDATE goods SET num = num + old.much - new.much WHERE goods_id = new.gid;
END$$


查詢觸發器

刪除觸發器



轉載于:https://www.cnblogs.com/cxchanpin/p/6815899.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252728.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252728.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252728.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何分析企業未來發展趨勢——以海康威視為例

財務分析主要基于歷史數據,但投資還需要看到企業未來的發展。 在前一篇的財務分析的文章中已經提到過:財務分析只是手段,最終還是要從中發現企業的競爭優勢以及行業的發展趨勢,并以此為基礎,分析企業未來的競爭優勢及…

java與C++的區別

java與C的區別 來源 https://www.cnblogs.com/Allen-rg/p/6692043.html “作為一名C程序員,我們早已掌握了面向對象程序設計的基本概念,而且Java的語法無疑是非常熟悉的。事實上,Java本來就是從C衍生出來的。”  然而,C和Java之…

js調試筆記

js調試方法很多,今天總結一下最實用的的斷點方法: debugger斷點 這個很常見,但許多人不知道其實可以添加條件判斷 if(something){debugger;} source斷點 這個最為常見,不做過多解釋,具體說一下幾個重要圖標: 恢復腳本執行至下一個…

JAVA Spring 事物 ( 已轉賬為例 ) 基于 AOP 注解

<一> 配置為文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:context"http://www.springf…

全球視頻監控設備市場規模分析

權威電子行業研究機構IHS Research發布《中國CCTV與視頻監控設備市場研究報告》顯示&#xff0c;2014年全球視頻監控設備市場143億美元&#xff0c;同比增長14.2%。歐洲、美洲、亞洲都增長低于預期;中國增長高于預期&#xff0c;市場總量達57.1億美元;美國市場雖然出貨量在增加…

vue 新窗口打開外鏈接

背景&#xff1a;vue-router 打開外鏈接 如果使用 a 標簽&#xff0c;會默認加上根路由&#xff0c;導致跳轉失效。那么如何讓 a 標簽點擊跳轉到新窗口&#xff1f;解決方法&#xff1a;html 代碼<a class"a-style" click"linkDownload(https://www.baidu.co…

EasyWeChat微信開放平臺第三方平臺接入

目錄實例化微信服務器推送事件預授權獲取預授權 Code獲取預授權 URLAPI 列表使用授權碼換取公眾號的接口調用憑據和授權信息獲取授權方的公眾號帳號基本信息獲取授權方的選項設置信息設置授權方的選項信息調用授權方 API實例化<?phpuse EasyWeChat\Foundation\Application;…

201521145048《Java程序設計》第11周學習總結

1. 本周學習總結 1.1 以你喜歡的方式&#xff08;思維導圖或其他&#xff09;歸納總結多線程相關內容。 2. 書面作業 本次PTA作業題集多線程 Q1.互斥訪問與同步訪問 完成題集4-4(互斥訪問)與4-5(同步訪問) 1.1 除了使用synchronized修飾方法實現互斥同步訪問&#xff0c;還有什…

修改chrome記住密碼后自動填充表單的背景

2019獨角獸企業重金招聘Python工程師標準>>> input:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill {background-color: rgb(250, 255, 189); /* #FAFFBD; */background-image: none;color: rgb(0, 0, 0); } 轉載于:https://my.oschina.net…

2018年我國視頻監控市場趨勢:智能視頻分析進入規模化

在安防領域中&#xff0c;視頻監控無疑是不可缺少的一環。我國是全球視頻安防行業增速最快的國家之一&#xff0c;近年來我國的視頻監控市場經歷了持續強勁的發展。我國視頻監控市場的高速增長反映了對個人安全及財產保護的擔憂增加。為解決該擔憂&#xff0c;公司及個人機構大…

RUP,XP,敏捷原理

①RUP-- RUP&#xff08;Rational Unified Process&#xff0c;統一軟件開發過程&#xff0c;統一軟件過程)是一個面向對象且基于網絡的程序開發方法論。 根據Rational(Rational Rose和統一建模語言的開發者)的說法&#xff0c;好像一個在線的指導者&#xff0c;它可以為所有方…

1001. A+B Format (20)---------------PAT開始

今天是第一次用Java提交PAT的代碼&#xff1a; 源代碼不能直接提交&#xff0c;需要經過修改&#xff1a; 源代碼&#xff1a; 1 package test;//提交時不能顯示這句2 3 import java.util.Scanner;4 5 public class Test_1001 {//提交時名字要改成Main6 public static void…

第一篇:SpringCloud 構建微服務系統之服務注冊和發現(consul)

版權聲明&#xff1a;本文為博主原創文章&#xff0c;未經博主允許不得轉載。 https://blog.csdn.net/u010046908/article/details/85260629 今天我們要學習的是consul在soringcloud中的使用。首先學習consul之前&#xff0c;我們應該看看consul的官網&#xff0c;對它有一個初…

2018 年視頻監控企業競爭力分析 海康威視連續七年蟬聯全球第一

視頻監控是安防行業的核心 近年來&#xff0c;隨著我國政府對平安城市、" 雪亮工程 " 以及金融和交通運輸等領域的重視&#xff0c;對于安防產品的需求不斷提升&#xff0c;安防市場規模也在隨之不斷擴大。視頻監控是整個安防系統最重要的物理基礎&#xff0c;視頻監…

java 二維數組

二維數組 多維數組可以簡單地理解為在數組中嵌套數組 二維數組的定義格式 二維數組的定義有很多方式 第一種方式 1 int[][] arr new int[3][4]; 上面的代碼相當于定義了一個3*4的二維數組&#xff0c;即二維數組的長度為3&#xff0c;二維數組中的每個元素又是一個長度為4的數…

Ambient occlusion

https://en.wikipedia.org/wiki/Ambient_occlusion https://gamedev.stackexchange.com/questions/23/what-is-ambient-occlusion http://people.mpi-inf.mpg.de/~ritschel/Papers/SSDO.pdf 注解&#xff1a; 論文&#xff08;http://people.mpi-inf.mpg.de/~ritschel/Papers/S…

利用RTL2832u電視棒芯片追蹤民航飛機軌跡

我國民航飛機通訊的頻率為1090Mhz&#xff0c;而rtl2832u電視棒芯片可以接受的頻率范圍為24 – 1766 MHz&#xff08;通過改制Q通道可以接收0-30Mhz的短波&#xff09;下面開始介紹利用rtl2832u電視棒芯片獲取民航航線 第一步淘寶搜索rtl2832u820T(50塊錢就能買到) <ignore_…

預見2019:《2019年中國視頻監控產業全景圖譜》(附產業布局、政策環境、市場規模、發展趨勢)

2019-2024年中國視頻監控設備行業市場需求預測與投資戰略規劃分析報告2019-2024年中國安防行業市場前瞻與投資戰略規劃分析報告2019-2024年中國智能安防行業市場前瞻與投資戰略規劃分析報告2019-2024年中國智能家居設備行業市場前瞻與投資策略規劃報告2019-2024年中國城市軌道交…

nginx負載均衡 頁面緩存

nginx的upstream目前支持4種方式的分配 1、輪詢&#xff08;默認&#xff09; 每個請求按時間順序逐一分配到不同的后端服務器&#xff0c;如果后端服務器down掉&#xff0c;能自動剔除。 2、weight 指定輪詢幾率&#xff0c;weight和訪問比率成正比&#xff0c;用于后端服務器…

Date擴展 正則匹配

<script>Date.prototype.formatfunction(){var dthis;//嚴格匹配 yyyy-mm-dd hh-mm-ssvar reg1/yyyy-mm-dd hh-m-s/;//匹配 yyyy*mm*dd hh*mm*ss *為任意一個除\r\n之外的字符 中間為任意多個空格var reg2/y{4}.m{2}.dd\shh.mm.ss/;reg1.test(arguments[0]);reg2.test(a…