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

歡迎訪問 生活随笔!

生活随笔

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

数据库

MySQL(十一)之触发器

發布時間:2024/4/13 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL(十一)之触发器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一篇介紹的是比較簡單的視圖,其實用起來是相對比較簡單的,以后有什么更多的關于視圖的用法,到時候在自己補充。接下來讓我們一起了解一下觸發器的使用!

一、觸發器概述

 1.1、什么是觸發器

  觸發器(Trigger):監視某種情況,并觸發某種操作。在MySQL Server里面也就是對某一個表的一定的操作,觸發某種條件(Insert,Update,Delete 等),從而自動執行的一段程序

  注意:你必須擁有相當大的權限才能創建觸發器(CREATE TRIGGER),如果你已經是Root用戶,那么就足夠了。這跟SQL的標準有所不同。

 1.2、觸發器作用

  那么為什么要使用數據庫對象觸發器呢?在具體開發項目時,經常會遇到如下實例:
    1)在學生表中擁有字段學生姓名,字段學生總數,每當添加一條學生信息時,學生的總數就必須同時更改。
    2)在學生表中還會有學生姓名的縮寫,學生住址等字段,添加學生信息時,往往需要檢查電話、郵箱等格式是否正確。
  上面的例子使用觸發器完成時具有這樣的特點,需要在表發生改變時,自動進行一些處理。MySQL在觸發DELETE/UPDATE/INSERT語句時就會自動執行所設置的操作,其他SQL語句則不會激活觸發器

 1.3、觸發器四要素

  監視地點:table
  監聽事件:insert/update/delete
  觸發時間:after/before
  觸發事件:insert/update/delete

二、觸發器用法

 2.1、觸發器語法

  CREATE TRIGGER <觸發器名稱>? --觸發器必須有名字,最多64個字符,可能后面會附有分隔符.它和MySQL中其他對象的命名方式基本相象.
  { BEFORE | AFTER }? --觸發器有執行的時間設置:可以設置為事件發生前或后。
  { INSERT | UPDATE | DELETE }? --同樣也能設定觸發的事件:它們可以在執行insert、update或delete的過程中觸發。
  ON <表名稱>? --觸發器是屬于某一個表的:當在這個表上執行插入、 更新或刪除操作的時候就導致觸發器的激活. 我們不能給同一張表的同一個事件安排兩個觸發器。
  FOR EACH ROW? --觸發器的執行間隔:FOR EACH ROW子句通知觸發器 每隔一行執行一次動作,而不是對整個表執行一次。
  <觸發器SQL語句>? --觸發器包含所要觸發的SQL語句:這里的語句可以是任何合法的語句, 包括復合語句,但是這里的語句受的限制和函數的一樣。

   簡單的寫就是這樣:

  create trigger tg_name after/before insert/update/delete on tablefor each row ####這句話在MySQL中是固定的beginsql語句;end$

?

  分析:由于在以上代碼段中的“sql語句;”是以分號結尾,所以需要將MySQL中的結尾標志換成“$”,更換MySQL命令結束標志的命令:delimiter $;
     ? 以上觸發器語法中的各個段的顏色與四要素對應查看理解。

 2.2、創建觸發器

  1)創建兩張表

  create table tb_goods(id int primary key auto_increment,name varchar(20),num int);create table tb_orders(id int primary key auto_increment,good_id int,much int); 

?

  2)在商品表中插入數據

  insert into tb_goods(name,num)values('商品1',10),('商品2',10),('商品3',10);

?

  3)假如我們賣了3個商品1

  沒有觸發器:

    往訂單表中插入一條記錄:insert into tb_orders(good_id,much) values(1,3);
    更新商品表中商品1的剩余數量:update tb_goods set num=num-3 where id=1;    

  創建觸發器:   

  create trigger tg_1 after insert on tb_orders
  for each row
  begin
  update tb_goods set num=num-3;
  end$

?

  這個時候如果執行insert into tb_orders(good_id,much) values(1,3);會發現商品的數量變為7了,說明在插入一條訂單的時候,觸發器自動做了更新操作。 

 2.3、觸發器對值得引用

  上述觸發器有一個問題,因為在觸發器中寫死了num和id,所以不管買哪個商品,最終更新的都是商品1的數量。這個時候,需要將觸發器中的值變為動態獲取。  

  對于insert來說,新插入的行用new來表示,行中的每一列的值用“new.列名”來表示:  

  新建能動態獲取值的觸發器: 

  create trigger tg_2 after insert on tb_ordersfor each rowbeginupdate tb_goods set num=num-new.much where id=new.id;end$

?

  刪除第一個觸發器:drop trigger tg_1;
  插入一條訂單記錄:insert into tb_orders(good_id,much) values(2,3)$
  執行完發現商品的數量變為7了,這樣子就是合適的。

三、觸發器實例

  1)創建表tab1 

  DROP TABLE IF EXISTS tab1;CREATE TABLE tab1(tab1_id varchar(11));

  2)創建表tab2

  DROP TABLE IF EXISTS tab2;CREATE TABLE tab2(tab2_id varchar(11));

  3)創建觸發器:t_afterinsert_on_tab1   

DROP TRIGGER IF EXISTS t_afterinsert_on_tab1; CREATE TRIGGER t_afterinsert_on_tab1 AFTER INSERT ON tab1 FOR EACH ROW BEGINinsert into tab2(tab2_id) values(new.tab1_id); END;

  4)想tab1插入數據 

INSERT INTO tab1(tab1_id) values('0001');

  5)查看變化 

SELECT * FROM tab1; SELECT * FROM tab2;

?

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的MySQL(十一)之触发器的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 雪白的扔子视频大全在线观看 | 欧美性猛交xxxx免费看 | 蜜桃又黄又粗又爽av免 | 国产乱码精品一品二品 | 性欧美丰满熟妇xxxx性仙踪林 | 91嫩草入口 | 国产精品久久久无码一区 | 日日干夜夜草 | 亚洲在线观看一区二区 | 中文字幕乱码视频 | 日本不卡一区二区在线观看 | 国产日本精品 | 97夜色 | 特级一级片 | 婷婷中文| 欧美一区二区三区婷婷月色 | 国产精选久久 | 丁香五香天堂网 | 中文字幕资源网 | 91成人毛片 | 免费乱淫视频 | 一区二区国产欧美 | 欧美aaa级 | 国产深夜福利在线 | 亚洲欧洲视频在线观看 | 成年人看片网站 | www.国产黄色 | 欧美精品一区二区成人 | 亚洲国产精品女人久久久 | 午夜伦理影院 | 欧美亚洲中文精品字幕 | 日本欧美在线 | 国产亚洲精品久久久久久久 | www.中文字幕在线观看 | 色吧av | 亚洲熟女少妇一区 | 加勒比综合网 | 精品国产aⅴ一区二区三区东京热 | 久久久精品在线 | 亚洲一区二区免费 | 免费一级欧美 | 亚洲精选一区二区三区 | 日韩av毛片在线观看 | 成人av网址大全 | 91一级片 | 黄色香港三级三级三级 | 丰腴饱满的极品熟妇 | 久久亚洲区 | 在线观看视频一区二区三区 | 国产又色又爽又黄又免费 | a极毛片| 久久av影院 | 东京干手机福利视频 | 一级高清视频 | 成人免费视频国产免费 | 亚洲视频www| 精品国产1区 | 日本美女裸体视频 | 91视频高清| 亚洲一区二区三区久久久 | 丰满岳乱妇一区二区 | 色婷婷国产精品视频 | 亚洲国产日韩欧美一区二区三区 | 久久国产激情视频 | 制服丝袜av在线 | 人禽l交视频在线播放 视频 | 91免费毛片 | 美日韩中文字幕 | 成人亚洲精品久久久久软件 | 亚洲午夜精选 | 日韩成人看片 | 精品在线第一页 | 国产精品久久久久精 | 免费无码又爽又黄又刺激网站 | 欧美成人免费观看 | 欧美高潮视频 | 国产乱码精品一区二三区蜜臂 | www日韩精品 | 91亚洲国产成人精品一区二区三 | 欧美人与zoxxxx另类 | 中文字幕天堂在线 | 自拍在线视频 | 婷婷亚洲五月 | 免费精品在线视频 | 久久久久久久久免费 | 成人免费一级视频 | 欧美色偷偷 | 午夜剧场在线 | 国产98色在线 | 日韩 | 玩弄人妻少妇500系列视频 | 亚洲射 | 婷婷狠狠操 | 五月激情六月丁香 | 欧美日韩亚洲视频 | 一区二区三区视频观看 | 国产欧美久久久久 | 射精一区二区 | 一呦二呦三呦精品网站 | 日本肉体xxxx裸体137大胆图 |