婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > mysql觸發器之創建多個觸發器操作實例分析

mysql觸發器之創建多個觸發器操作實例分析

熱門標簽:走過哪個省地圖標注 萊西市地圖標注 巫師三血與酒地圖標注 常州網絡外呼系統開發 銷售語音電話機器人 400電話申請信用卡 安徽ai電話電銷機器人有效果嗎 外呼系統電銷受騙 在哪里申請400電話

本文實例講述了mysql觸發器之創建多個觸發器操作。分享給大家供大家參考,具體如下:

這次記錄的內容mysql 版本必須得是5.7.2+的哈,之前的會不好使的。廢話不多說,咱們開始正文哈。

在mysql 5.7.2+版本之前,我們只能為表中的事件創建一個觸發器,例如,只能為BEFORE UPDATE或AFTER UPDATE事件創建一個觸發器。 mysql 5.7.2+版本解決了這樣限制,并允許我們為表中的相同事件和動作時間創建多個觸發器。當事件發生時,觸發器將依次激活。我們來參考創建第一個觸發器中的語法。如果表中有相同事件有多個觸發器,mysql 將按照創建的順序調用觸發器。要更改觸發器的順序,需要在FOR EACH ROW子句之后指定FOLLOWS或PRECEDES。我們來看下這兩個詞的說明:

  • FOLLOWS選項允許新觸發器在現有觸發器之后激活。
  • PRECEDES選項允許新觸發器在現有觸發器之前激活。

完事來看下使用顯式順序創建新的附加觸發器的語法:

DELIMITER $$
CREATE TRIGGER trigger_name
[BEFORE|AFTER] [INSERT|UPDATE|DELETE] ON table_name
FOR EACH ROW [FOLLOWS|PRECEDES] existing_trigger_name
BEGIN
…
END$$
DELIMITER ;

然后,我們來看一個在表中的同一個事件和動作上,創建多個觸發器的例子。我們來基于products表進行演示,首先來創建一個新的price_logs表,完事呢,每當更改產品的價格(MSRP列)時,要將舊的價格記錄在一個名為price_logs的表中,先來看想sql:

CREATE TABLE price_logs (
 id INT(11) NOT NULL AUTO_INCREMENT,
 product_code VARCHAR(15) NOT NULL,
 price DOUBLE NOT NULL,
 updated_at TIMESTAMP NOT NULL DEFAULT 
       CURRENT_TIMESTAMP 
       ON UPDATE CURRENT_TIMESTAMP,
 PRIMARY KEY (id),
 KEY product_code (product_code),
 CONSTRAINT price_logs_ibfk_1 FOREIGN KEY (product_code) 
 REFERENCES products (productCode) 
 ON DELETE CASCADE 
 ON UPDATE CASCADE
);

完事,當表的BEFORE UPDATE事件發生時,創建一個新的觸發器。觸發器名稱為before_products_update,具體實現如下所示:

DELIMITER $$
CREATE TRIGGER before_products_update 
  BEFORE UPDATE ON products 
  FOR EACH ROW 
BEGIN
   INSERT INTO price_logs(product_code,price)
   VALUES(old.productCode,old.msrp);
END$$
DELIMITER ;

然后,當我們更改產品的價格,并使用以下update語句,最后查詢price_logs表:

UPDATE products
SET msrp = 95.1
WHERE productCode = 'S10_1678';
-- 查詢結果價格記錄
SELECT * FROM price_logs;

上面查詢語句執行后,得到以下結果:

+----+--------------+-------+---------------------+
| id | product_code | price | updated_at     |
+----+--------------+-------+---------------------+
| 1 | S10_1678   | 95.7 | 2017-08-03 02:46:42 |
+----+--------------+-------+---------------------+
1 row in set

可以看到結果中,它按我們預期那樣工作了。

完事我們再來假設不僅要看到舊的價格,改變的時候,還要記錄是誰修改了它。要實現這個,我們可以向price_logs表添加其他列,但是,為了實現多個觸發器的演示,我們將創建一個新表來存儲進行更改的用戶的數據。這個新表的名稱為user_change_logs,結構如下:

CREATE TABLE user_change_logs (
 id int(11) NOT NULL AUTO_INCREMENT,
 product_code varchar(15) DEFAULT NULL,
 updated_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 
 ON UPDATE CURRENT_TIMESTAMP,
 updated_by varchar(30) NOT NULL,
 PRIMARY KEY (id),
 KEY product_code (product_code),
 CONSTRAINT user_change_logs_ibfk_1 FOREIGN KEY (product_code) 
 REFERENCES products (productCode) 
 ON DELETE CASCADE ON UPDATE CASCADE
);

現在,我們創建一個在products表上的BEFORE UPDATE事件上激活的第二個觸發器。 此觸發器將更改的用戶信息更新到user_change_logs表。 它在before_products_update觸發后被激活:

DELIMITER $$
CREATE TRIGGER before_products_update_2 
  BEFORE UPDATE ON products 
  FOR EACH ROW FOLLOWS before_products_update
BEGIN
  INSERT INTO user_change_logs(product_code,updated_by)
  VALUES(old.productCode,user());
END$$
DELIMITER ;

然后我們來使用update語句更新指定產品的價格:

UPDATE products
SET msrp = 95.3
WHERE productCode = 'S10_1678';

再來分別從price_logs和user_change_logs表查詢數據:

mysql> SELECT * FROM price_logs;
+----+--------------+-------+---------------------+
| id | product_code | price | updated_at     |
+----+--------------+-------+---------------------+
| 1 | S10_1678   | 95.7 | 2017-08-03 02:46:42 |
| 2 | S10_1678   | 95.1 | 2017-08-03 02:47:21 |
+----+--------------+-------+---------------------+
2 rows in set
mysql> SELECT * FROM user_change_logs;
+----+--------------+---------------------+----------------+
| id | product_code | updated_at     | updated_by   |
+----+--------------+---------------------+----------------+
| 1 | S10_1678   | 2017-08-03 02:47:21 | root@localhost |
+----+--------------+---------------------+----------------+
1 row in set

如上所見,兩個觸發器按照預期的順序激活執行相關操作了。完事我們來在information_schema數據庫的triggers表中的action_order列,看下觸發激活同一事件和操作的順序:

mysql> SELECT 
  trigger_name, action_order
FROM
  information_schema.triggers
WHERE
  trigger_schema = 'yiibaidb'
ORDER BY event_object_table , 
     action_timing , 
     event_manipulation;
+--------------------------+--------------+
| trigger_name       | action_order |
+--------------------------+--------------+
| before_employee_update  |      1 |
| before_products_update  |      1 |
| before_products_update_2 |      2 |
+--------------------------+--------------+
3 rows in set

好啦,本次記錄就到這里了。

更多關于MySQL相關內容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL事務操作技巧匯總》、《MySQL存儲過程技巧大全》、《MySQL數據庫鎖相關技巧匯總》及《MySQL常用函數大匯總》

希望本文所述對大家MySQL數據庫計有所幫助。

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

標簽:果洛 黃石 煙臺 來賓 河北 赤峰 鞍山 陽江

巨人網絡通訊聲明:本文標題《mysql觸發器之創建多個觸發器操作實例分析》,本文關鍵詞  mysql,觸發器,之,創建,多個,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《mysql觸發器之創建多個觸發器操作實例分析》相關的同類信息!
  • 本頁收集關于mysql觸發器之創建多個觸發器操作實例分析的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精品99久| 色久优优欧美色久优优| 国产一区二区三区综合| 欧美一区二区日韩一区二区| 亚洲一区二区美女| 一本大道久久a久久综合婷婷| 国产精品乱子久久久久| 成人aaaa免费全部观看| 亚洲欧美日韩电影| 678五月天丁香亚洲综合网| 久久国产精品99精品国产 | 在线视频欧美区| 亚洲国产日韩一级| 欧美一区二区三区的| 久久激情五月激情| 国产精品人成在线观看免费| 91久久精品一区二区| 人人狠狠综合久久亚洲| 欧美大度的电影原声| 高清久久久久久| 天天影视涩香欲综合网| 久久久久久久久久久99999| 91一区二区在线| 老司机精品视频一区二区三区| 久久久久国产一区二区三区四区 | 91久久一区二区| 日本三级亚洲精品| 国产日韩精品视频一区| 日本精品免费观看高清观看| 丝袜脚交一区二区| 亚洲人快播电影网| 精品国产一区二区国模嫣然| 国产91对白在线观看九色| 亚洲一区自拍偷拍| 国产欧美1区2区3区| 91精品国产综合久久久久| 成人av片在线观看| 九九九精品视频| 亚洲综合久久久| 国产亚洲欧美在线| 日韩免费观看高清完整版在线观看 | 北岛玲一区二区三区四区| 亚洲一二三四在线| 国产精品久久久久久亚洲毛片 | 蜜臀va亚洲va欧美va天堂| 国产精品久久久久影院| 欧美一区二区三区性视频| 成人av高清在线| 国产乱码精品一品二品| 全部av―极品视觉盛宴亚洲| 亚洲影院免费观看| 亚洲欧美视频在线观看| 国产精品情趣视频| 久久天天做天天爱综合色| 日韩天堂在线观看| 欧美日本高清视频在线观看| 欧美专区在线观看一区| 在线影视一区二区三区| 91麻豆福利精品推荐| av亚洲精华国产精华| 成人听书哪个软件好| 成人免费观看视频| 成人av在线资源| 成人av网址在线| 91麻豆福利精品推荐| 91福利资源站| 欧美午夜视频网站| 欧美日韩二区三区| 欧美一区二区三区成人| 精品国产91洋老外米糕| 久久久激情视频| 中文字幕综合网| 一区二区高清在线| 三级久久三级久久| 精品一区二区三区久久| 国产乱码字幕精品高清av| 成人深夜福利app| av在线一区二区| 日本乱人伦一区| 欧美一区二区三区男人的天堂| 日韩欧美国产午夜精品| 久久久精品人体av艺术| 亚洲另类春色国产| 日韩福利视频网| 成人黄色免费短视频| 欧洲人成人精品| 欧美一区二区女人| 国产日产欧美一区| 亚洲国产精品嫩草影院| 精品无码三级在线观看视频| 成人性视频网站| 欧美日韩亚洲国产综合| 精品欧美久久久| 亚洲欧美日韩国产综合在线 | 欧美精品v日韩精品v韩国精品v| 这里只有精品99re| 国产女人aaa级久久久级| 亚洲激情自拍偷拍| 精品一区在线看| 欧美午夜精品久久久久久超碰| 2014亚洲片线观看视频免费| 亚洲精品v日韩精品| 国产在线视频精品一区| 欧美日韩在线直播| 亚洲同性gay激情无套| 久久99精品国产.久久久久久 | 国产福利一区在线观看| 欧美午夜一区二区三区| 久久你懂得1024| 日精品一区二区| 91一区二区在线观看| 国产丝袜欧美中文另类| 美女在线视频一区| 91福利视频网站| 国产精品高清亚洲| 国产精品亚洲综合一区在线观看| 欧美亚洲国产一区二区三区 | 国产精品理论片在线观看| 免费精品视频最新在线| 91片在线免费观看| 国产午夜久久久久| 麻豆成人综合网| 911国产精品| 亚洲女同ⅹxx女同tv| 成人激情校园春色| 日韩欧美一区在线观看| 亚洲精品国久久99热| 波多野结衣在线一区| 久久久亚洲精品石原莉奈| 三级在线观看一区二区| 精品视频在线免费| 最新热久久免费视频| 97精品久久久午夜一区二区三区| 国产欧美一区视频| 国产精品自拍一区| 亚洲精品一区二区在线观看| 久久99精品久久久久婷婷| 日韩欧美国产一区在线观看| 欧美a一区二区| 精品国产乱码久久久久久闺蜜| 麻豆国产精品777777在线| 91精品欧美一区二区三区综合在| 亚洲国产精品久久人人爱| 91久久线看在观草草青青| 亚洲精品视频在线观看网站| 欧美性做爰猛烈叫床潮| 午夜免费久久看| 67194成人在线观看| 国产自产v一区二区三区c| 国产日韩一级二级三级| av在线播放成人| 亚洲国产视频一区二区| 欧美一区二区网站| 国产福利91精品一区| 亚洲精品高清视频在线观看| 欧美精品在线视频| 亚洲色图视频免费播放| 欧美三级韩国三级日本一级| 蜜桃视频第一区免费观看| 久久天天做天天爱综合色| 国产不卡视频在线播放| 亚洲精品国久久99热| 欧美久久久一区| 丰满白嫩尤物一区二区| 亚洲国产美国国产综合一区二区| 91精选在线观看| 成人av中文字幕| 青青草原综合久久大伊人精品| 国产欧美日韩精品一区| 欧美午夜电影网| 国产.精品.日韩.另类.中文.在线.播放 | 国产亚洲欧美中文| 色哦色哦哦色天天综合| 日韩成人精品视频| 国产欧美一区二区三区网站| 色老汉一区二区三区| 看电影不卡的网站| 亚洲精品久久嫩草网站秘色| 久久这里只有精品视频网| 色久综合一二码| 国产乱国产乱300精品| 午夜精品久久一牛影视| 国产亚洲欧美激情| 色偷偷88欧美精品久久久| 国产精品综合视频| 日韩av电影免费观看高清完整版 | 亚洲一二三四久久| 国产亚洲短视频| 精品少妇一区二区三区日产乱码 | www.亚洲人| 国产一区不卡视频| 日韩精品电影在线| 中文字幕亚洲一区二区av在线| 欧美一卡2卡3卡4卡| 欧美午夜不卡视频| 91免费国产视频网站| 国产999精品久久久久久绿帽| 理论电影国产精品| 日韩国产在线观看| 视频一区二区中文字幕|