校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > mysql 觸發器用法實例詳解

mysql 觸發器用法實例詳解

熱門標簽:電子地圖標注電話 沈陽電銷外呼系統原理是什么 聊城智能外呼系統運營商 上海智能外呼系統代理商 扎樣申請400電話 地圖標注人員兼職 成都優派外呼系統 寧波企業外呼系統收費 ps制作地圖標注gif

 MySQL觸發器語法詳解:

         觸發器 trigger是一種特殊的存儲過程,他在插入(inset)、刪除(delete)或修改(update)特定表中的數據時觸發執行,它比數據本身標準的功能更精細和更復雜的數據控制能力。觸發器不是由程序調用,而是由某個事件來觸發的。在有數據修改時自動強制執行其業務規則,經常用于加強數據的完整性約束和業務規則等。觸發器可以查詢其他表,而且包含復制的sql語句。觸發器也可用于強制引用完整性。觸發器可以強制比用check約束定義的約束更為復雜的約束。

(一).CREATE TRIGGER語法

        CREATE TRIGGER trigger_nametrigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt;
        觸發程序是與表有關的命名數據庫對象,當表上出現特定事件時,將激活該對象。
        觸發程序與命名為tbl_name的表相關。tbl_name必須引用永久性表。不能將觸發程序與TEMPORARY表或視圖關聯起來。
        trigger_time是觸發程序的動作時間。它可以是BEFORE或AFTER,以指明觸發程序是在激活它的語句之前或之后觸發。
        trigger_event指明了激活觸發程序的語句的類型。trigger_event可以是下述值之一:

        (1).INSERT:將新行插入表時激活觸發程序,例如,通過INSERT、LOAD DATA和REPLACE
語句。
       (2).UPDATE:更改某一行時激活觸發程序,例如,通過UPDATE語句。
       (3).DELETE:從表中刪除某一行時激活觸發程序,例如,通過DELETE和REPLACE語句。

請注意,trigger_event與以表操作方式激活觸發程序的SQL語句并不很類似,這點很重要。例如,關于INSERT的BEFORE觸發程序不僅能被INSERT語句激活,也能被LOAD DATA語句激活。可能會造成混淆的例子之一是INSERT INTO .. ON DUPLICATE UPDATE ...語法:BEFORE INSERT觸發程序對于每一行將激活,后跟AFTER INSERT觸發程序,或BEFORE UPDATE和AFTER  UPDATE觸發程序,具體情況取決于行上是否有重復鍵。

      對于具有相同觸發程序動作時間和事件的給定表,不能有兩個觸發程序。例如,對于某一表,不能有兩個BEFORE UPDATE觸發程序。但可以有1個BEFORE UPDATE觸發程序和1個BEFORE  INSERT觸發程序,或1個BEFOREUPDATE觸發程序和1個AFTER UPDATE觸發程序。trigger_stmt是當觸發程序激活時執行的語句。如果你打算執行多個語句,可使用BEGIN ... END復合語句結構。這樣,就能使用存儲子程序中允許的相同語句

(二).DROP TRIGGER語法

     DROP TRIGGER[schema_name.]trigger_name舍棄觸發程序。方案名稱(schema_name)是可選的。如果省略了schema(方案),將從當前方案中舍棄觸發程序。

     注釋:從MySQL 5.0.10之前的MySQL版本升級到5.0.10或更高版本時(包括所有的MySQL5.1版本),必須在升級之前舍棄所有的觸發程序,并在隨后重新創建它們,否則,在升級之后DROP TRIGGER不工作。DROP TRIGGER語句需要SUPER權限。

(三).使用觸發程序

      在本節中,介紹了在MySQL 5.1中使用觸發程序的方法,并介紹了在使用觸發程序方面的限制。

      觸發程序是與表有關的命名數據庫對象,當表上出現特定事件時,將激活該對象。在某些觸發程序的用法中,可用于檢查插入到表中的值,或對更新涉及的值進行計算。 

      觸發程序與表相關,當對表執行INSERT、DELETE或UPDATE語句時,將激活觸發程序。可以將觸發程序設置為在執行語句之前或之后激活。例如,可以在從表中刪除每一行之前,或在更新了,每一行后激活觸發程序。要想創建觸發程序或舍棄觸發程序,可使用CREATE TRIGGER或DROP TRIGGER語句.觸發程序不能調用將數據返回客戶端的存儲程序,也不能使用采用CALL語句的動態SQL(允許存儲程序通過參數將數據返回觸發程序)。

      觸發程序不能使用以顯式或隱式方式開始或結束事務的語句,如START TRANSACTION、
COMMIT或ROLLBACK。

     使用OLD和NEW關鍵字,能夠訪問受觸發程序影響的行中的列(OLD和NEW不區分大小寫)。

     在INSERT觸發程序中,僅能使用NEW.col_name,沒有舊行。在DELETE觸發程序中,僅能使用OLD.col_name,沒有新行。在UPDATE觸發程序中,可以使用OLD.col_name來引用更新前的某一行的列,也能使用NEW.col_name來引用更新后的行中的列。

用OLD命名的列是只讀的。你可以引用它,但不能更改它。對于用NEW命名的列,如果具有SELECT權限,可引用它。在BEFORE觸發程序中,如果你具有UPDATE權限,可使用“SET NEW.col_name = value”更改它的值。這意味著,你可以使用觸發程序來更改將要插入到新行中的值,或用于更新行的值。在BEFORE觸發程序中,AUTO_INCREMENT列的NEW值為0,不是實際插入新記錄時將自動生成的序列號。

     通過使用BEGIN ...END結構,能夠定義執行多條語句的觸發程序。在BEGIN塊中,還能使用存儲子程序中允許的其他語法,如條件和循環等。但是,正如存儲子程序那樣,定義執行多條語句的觸發程序時,如果使用mysql程序來輸入觸發程序,需要重新定義語句分隔符,以便能夠在觸發程序定義中使用字符“;”。在下面的示例中,演示了這些要點。在該示例中,定義了1個UPDATE觸發程序,用于檢查更新每一行時將使用的新值,并更改值,使之位于0~100的范圍內。它必須是BEFORE觸發程序,這是因為,需要在將值用于更新行之前對其進行檢查:

mysql> delimiter //
mysql> CREATE TRIGGER upd_check BEFORE UPDATE ON account
   -> FOR EACH ROW
   -> BEGIN
   -> IF NEW.amount  0 THEN
   -> SET NEW.amount = 0;
   -> ELSEIF NEW.amount > 100 THEN
   -> SET NEW.amount = 100;
   -> END IF;
   -> END;//
mysql> delimiter ;

      較為簡單的方法是,單獨定義存儲程序,然后使用簡單的CALL語句從觸發程序調用存儲程序。如果你打算從數個觸發程序內部調用相同的子程序,該方法也很有幫助。在觸發程序的執行過程中,MySQL處理錯誤的方式如下:

     (1)如果BEFORE觸發程序失敗,不執行相應行上的操作。
     (2)僅當BEFORE觸發程序(如果有的話)和行操作均已成功執行,才執行AFTER觸發程序。
     (3) 如果在BEFORE或AFTER觸發程序的執行過程中出現錯誤,將導致調用觸發程序的整個語句的失敗。
     (4)對于事務性表,如果觸發程序失敗(以及由此導致的整個語句的失敗),該語句所執行的所有更改將回滾。對于非事務性表,不能執行這類回滾,因而,即使語句失敗,失敗之前所作的任何更改依然有效。

例一:

mysql> CREATE TABLE account (acct_num INT, amount DECIMAL(10,2));
mysql> CREATE TRIGGER ins_sum BEFORE INSERT ON account FOR EACH ROW SET @sum = @sum + NEW.amount;

 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

您可能感興趣的文章:
  • MySQL觸發器的使用場景及方法實例
  • mysql觸發器原理與用法實例分析
  • mysql觸發器之創建多個觸發器操作實例分析
  • MySQL 觸發器定義與用法簡單實例
  • MySQL通過觸發器解決數據庫中表的行數限制詳解及實例
  • MySQL 觸發器詳解及簡單實例
  • MySQL觸發器運用于遷移和同步數據的實例教程
  • mysql觸發器(Trigger)簡明總結和使用實例
  • MySQL中觸發器入門簡單實例與介紹
  • mysql觸發器trigger實例詳解

標簽:AXB 朔州 汕頭 內江 三明 林芝 咸寧 宿州

巨人網絡通訊聲明:本文標題《mysql 觸發器用法實例詳解》,本文關鍵詞  mysql,觸發器,用法,實例,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《mysql 觸發器用法實例詳解》相關的同類信息!
  • 本頁收集關于mysql 觸發器用法實例詳解的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    久久97超碰国产精品超碰| 美女网站一区二区| 欧美大胆人体bbbb| 成人精品在线视频观看| 日韩福利视频导航| 国产精品女主播av| 欧美大片一区二区| 欧美日韩免费不卡视频一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品国产三级国产a| 精品美女被调教视频大全网站| 色综合欧美在线视频区| 国产一区二区三区在线观看免费视频| 亚洲夂夂婷婷色拍ww47| 国产精品久久久久影院老司| 日韩三级视频在线看| 欧美性猛交xxxxxx富婆| 国产欧美精品一区aⅴ影院| 日韩一区二区三区av| 欧洲日韩一区二区三区| 国产激情一区二区三区四区 | 久久亚洲一区二区三区明星换脸| 色视频一区二区| 国产高清视频一区| 麻豆极品一区二区三区| 日本不卡视频一二三区| 午夜激情久久久| 亚洲伦理在线免费看| 亚洲欧美自拍偷拍| 国产精品白丝在线| 中文av一区二区| 久久久久久久国产精品影院| 欧美大片国产精品| 精品对白一区国产伦| 久久人人爽人人爽| 久久婷婷一区二区三区| 久久综合色一综合色88| 26uuu亚洲综合色| 久久亚洲一级片| 国产亚洲自拍一区| 久久精品综合网| 国产视频一区二区在线| 国产精品你懂的在线| 国产欧美精品国产国产专区| 欧美激情一区二区三区全黄| 国产精品萝li| 综合亚洲深深色噜噜狠狠网站| 亚洲图片你懂的| 亚洲尤物在线视频观看| 亚洲第一成年网| 天天色 色综合| 毛片av一区二区三区| 国内精品在线播放| 国产真实乱偷精品视频免| 国产剧情在线观看一区二区 | 欧美日韩国产片| 欧美久久久久中文字幕| 欧美一区二区精品在线| 久久在线观看免费| 国产精品灌醉下药二区| 亚洲激情一二三区| 视频一区二区欧美| 国内精品免费**视频| 暴力调教一区二区三区| 色999日韩国产欧美一区二区| 欧美性受xxxx黑人xyx性爽| 日韩三级免费观看| 国产日韩一级二级三级| 亚洲永久免费av| 蜜桃精品视频在线| 高清不卡在线观看| 欧美色图片你懂的| 日韩精品资源二区在线| 国产精品另类一区| 亚洲成av人片一区二区梦乃| 国产真实乱偷精品视频免| av一区二区三区黑人| 欧美日韩成人综合天天影院| 欧美成人欧美edvon| 日韩久久一区二区| 久久电影国产免费久久电影| 91美女片黄在线观看91美女| 91精品国产一区二区人妖| 中文字幕亚洲区| 日韩**一区毛片| 99re成人在线| 91精品国产色综合久久久蜜香臀| 国产无遮挡一区二区三区毛片日本| 亚洲欧美一区二区三区国产精品 | 在线欧美小视频| 欧美成人艳星乳罩| 亚洲精品老司机| 看电视剧不卡顿的网站| 色狠狠av一区二区三区| 国产日韩一级二级三级| 丝袜美腿成人在线| 91在线看国产| 久久尤物电影视频在线观看| 婷婷久久综合九色综合伊人色| 懂色av中文一区二区三区 | 欧美三级电影在线观看| 国产亚洲一区二区三区在线观看 | 亚洲欧洲美洲综合色网| 蜜臀av性久久久久av蜜臀妖精| 91社区在线播放| 国产视频一区不卡| 奇米色777欧美一区二区| 色哟哟国产精品| 国产欧美一区二区精品忘忧草| 亚洲国产aⅴ天堂久久| 国产.欧美.日韩| 日韩美女视频在线| 午夜精品免费在线观看| 欧美专区日韩专区| 国产精品成人网| 国产综合色精品一区二区三区| 欧美日韩极品在线观看一区| 综合中文字幕亚洲| 99久久综合狠狠综合久久| 日韩欧美亚洲国产精品字幕久久久 | 国产黄色精品视频| 欧美va在线播放| 亚洲国产日韩一区二区| 色婷婷综合久久久久中文| 亚洲三级免费电影| 粉嫩一区二区三区在线看| 亚洲精品在线三区| 久久99精品国产| 日韩美女一区二区三区四区| 免费在线视频一区| 欧美日韩情趣电影| 亚洲美女区一区| 色婷婷av一区| 亚洲黄色在线视频| 色综合久久天天| 最新高清无码专区| 福利91精品一区二区三区| 久久久久久久久久电影| 国产成人综合在线| 国产日韩v精品一区二区| 成人性生交大合| 亚洲国产高清在线观看视频| 国产精品综合网| 亚洲国产成人一区二区三区| 97精品国产97久久久久久久久久久久 | 91蜜桃网址入口| 亚洲精品免费电影| 欧美日韩高清在线播放| 偷拍自拍另类欧美| 欧美精品 国产精品| 奇米777欧美一区二区| 欧美一级日韩一级| 国产馆精品极品| 国产精品久久影院| 欧美r级电影在线观看| 蜜桃av一区二区在线观看| 欧美大片日本大片免费观看| 国产精品一区二区三区网站| 中国色在线观看另类| a级精品国产片在线观看| 亚洲一区二区三区中文字幕| 欧美日本免费一区二区三区| 激情小说欧美图片| 国产精品美女久久久久久久久| 91在线你懂得| 午夜视频一区二区| 久久久.com| 欧美午夜精品久久久| 美女一区二区三区| 国产精品女上位| 欧美群妇大交群的观看方式| 国产一区二区中文字幕| 亚洲综合在线视频| 精品国产一区二区三区av性色| 国产a精品视频| 亚洲成人av福利| 欧美国产精品v| 欧美色视频在线| 成人黄色电影在线 | 色先锋aa成人| 婷婷成人激情在线网| 久久婷婷成人综合色| 91国内精品野花午夜精品| 久久不见久久见免费视频7| 亚洲欧美aⅴ...| 久久综合狠狠综合| 日本韩国一区二区三区视频| 国产一区二区视频在线播放| 夜夜精品视频一区二区| 久久久国产午夜精品| 欧美精品一级二级三级| 99久久婷婷国产| 开心九九激情九九欧美日韩精美视频电影| 国产精品视频一区二区三区不卡| 欧美精品精品一区| 91蜜桃传媒精品久久久一区二区| 国产一二三精品| 香蕉影视欧美成人| 综合久久久久久久| 久久天堂av综合合色蜜桃网|