<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      本篇文章分三步介紹觸發器:

      1.觸發器是什么

      2.創建觸發器

      3.使用觸發器


       

      1.觸發器是什么?

      一類特殊的數據庫程序,可以監視某種數據的操作(insert/update/delete),并觸發相關的操作(insert/update/delete),保護數據的完整性。

      個人理解就有點類似于Java的觀察者模式,一個對象變化,觀察者也跟著做出響應。

      Mysql好像是從5.0以后開始支持觸發器的。

       

      2.創建觸發器

      創建觸發器我將介紹兩種方式:用語句創建,用navicat創建。

      創建觸發器的語法如下:

      CREATE TRIGGER trigger_name trigger_time trigger_event ON tb_name FOR EACH ROW trigger_stmt
      trigger_name:觸發器的名稱
      tirgger_time:觸發時機,為BEFORE或者AFTER
      trigger_event:觸發事件,為INSERT、DELETE或者UPDATE
      tb_name:表示建立觸發器的表明,就是在哪張表上建立觸發器
      trigger_stmt:觸發器的程序體,可以是一條SQL語句或者是用BEGIN和END包含的多條語句
      所以可以說MySQL創建以下六種觸發器:
      BEFORE INSERT,BEFORE DELETE,BEFORE UPDATE
      AFTER INSERT,AFTER DELETE,AFTER UPDATE

      其中,觸發器名參數指要創建的觸發器的名字

      BEFORE和AFTER參數指定了觸發執行的時間,在事件之前或是之后

      FOR EACH ROW表示任何一條記錄上的操作滿足觸發事件都會觸發該觸發器

      創建多個執行語句的觸發器:

      CREATE TRIGGER 觸發器名 BEFORE|AFTER 觸發事件
      ON 表名 FOR EACH ROW
      BEGIN
          執行語句列表
      END

       NEW和OLD的使用:

      觸發器類型 new和old的使用
      insert new代表新增的數據
      update new代表更新后的數據,old代表更新前的數據
      delete old代表要刪除的數據

      某一個字段可以用new/lod.字段名

      接下來我們創建2個表用來測試:

      stu表:主表(被觀察者)

      DROP TABLE IF EXISTS `stu`;
      CREATE TABLE `stu` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
      `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名',
      `age` int(11) NULL DEFAULT NULL COMMENT '年齡',
      `sort` int(11) NULL DEFAULT NULL COMMENT '排序字段',
      PRIMARY KEY (`id`) USING BTREE
      ) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

      stu_log表:觸發器關聯表(觀察者)

      DROP TABLE IF EXISTS `stu_log`;
      CREATE TABLE `stu_log` (
      `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
      `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
      `create_time` datetime(0) NULL DEFAULT NULL,
      PRIMARY KEY (`id`) USING BTREE
      ) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

      現在我們假設有這樣一個業務,在stu表新增和刪除數據時,同步在stu_log中記錄日志,記錄name和時間。

      如果不使用觸發器,我們就需要編寫代碼來實現這個需求,但是觸發器可以幫我們輕松的實現。

      首先我們使用語句來創建一個insert觸發器:

      DROP TRIGGER IF EXISTS `insert_log`;
      delimiter ;;
      CREATE TRIGGER `add_log` AFTER INSERT ON `stu` FOR EACH ROW BEGIN
      INSERT INTO stu_log(name,create_time)  VALUES(new.`name`,now());
      END
      ;;
      delimiter ;

       

      執行結果:

      然后我們再用navicat創建一個delete觸發器:

      step1:右鍵stu表,選擇設計表----觸發器

       

       step2:如圖所示填選,選擇刪除前觸發

       

       step3:在下方定義框內寫執行語句,如圖   記得點保存!

       

       語句:

      begin
      INSERT INTO stu_log(name,create_time)  VALUES(old.`name`,now());
      end

       

      3.使用觸發器

      測試一下:新增一條數據

      insert into stu (name,age) VALUES('李白',36)

      查看stu表和stu_log表:

       

       如圖,觸發器已經生效了!

       

      測試刪除一條數據

      DELETE from stu where name = '李白'

       

      查看stu表和stu_log表:

       

       

       

        如圖,觸發器已經生效了!

       

      本文知識初步探討一下觸發器,我們可以用觸發器實現更多的功能,如日志審計,同步復制表,自動計算等等,歡迎留言探討!

       

       

      愿你在每個平淡無奇的日子里總會有驚喜。

       

      posted on 2021-02-25 10:28  編程江湖浪客  閱讀(141)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲国产成人AⅤ片在线观看| 日韩国产中文字幕精品| 亚洲色大成网站www看下面| 色悠悠国产精品免费观看| 漂亮人妻被中出中文字幕| 四虎在线永久免费看精品| 精品亚洲国产成人av| 丰满多毛的大隂户视频| 欧美激情 亚洲 在线| 精品中文字幕一区在线| 国内精品大秀视频日韩精品| 欧洲熟妇色自偷自拍另类| 中文字幕日韩精品一区二区三区| 欧洲人与动牲交α欧美精品| 日韩三级一区二区在线看| 国产v亚洲v天堂a无码99 | 国产玖玖视频| 国产在线精品欧美日韩电影| 狠狠亚洲色一日本高清色| 科技| 国内精品久久久久影视| 亚洲综合一区二区三区不卡| 久久99日韩国产精品久久99| 国产999精品2卡3卡4卡| 新沂市| 潮喷无码正在播放| 亚洲高潮喷水无码AV电影| 国产人妻高清国产拍精品| 91中文字幕在线一区| 国产精品亚洲二区亚瑟| 国产伦精品一区二区亚洲| 日韩大片高清播放器| 日韩精品不卡一区二区三区| 狠狠色噜噜狠狠狠狠7777米奇| 日本福利一区二区精品| 香蕉久久夜色精品国产成人| 欧美性插b在线视频网站| av天堂亚洲天堂亚洲天堂| 国产一精品一av一免费| 爆乳女仆高潮在线观看| 视频一区二区三区高清在线 |