最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql觸發(fā)器原理與用法實例分析

 更新時間:2020年04月16日 11:26:42   作者:隨風(fēng)行云  
這篇文章主要介紹了mysql觸發(fā)器原理與用法,結(jié)合實例形式分析了mysql觸發(fā)器基本概念、原理、用法及操作注意事項,需要的朋友可以參考下

本文實例講述了mysql觸發(fā)器原理與用法。分享給大家供大家參考,具體如下:

本文內(nèi)容:

  • 什么是觸發(fā)器
  • 創(chuàng)建觸發(fā)器
    • 單條觸發(fā)器語句
    • 多條觸發(fā)器語句
  • 查看觸發(fā)器
  • 刪除觸發(fā)器
  • 觸發(fā)器的新舊記錄引用

首發(fā)日期:2018-04-14


什么是觸發(fā)器:

  • 觸發(fā)器用來在某些操作之后,“自動”執(zhí)行一些操作。(比如插入了新的學(xué)生信息,那么在班級表中應(yīng)該修改學(xué)生數(shù))。
  • 當(dāng)insert delete update設(shè)置觸發(fā)器之后,執(zhí)行insert delete update操作就會自動觸發(fā)設(shè)置的內(nèi)容。
  • 一張表最大能有6個觸發(fā)器(3*2,三種操作*兩種時間(before|after))。


創(chuàng)建觸發(fā)器:

  • 語法:create trigger 觸發(fā)器名 before|after 事件 on 表名 for each row 觸發(fā)器語句;
    • 觸發(fā)器名建議為trigger_xxx,這樣便于區(qū)分,觸發(fā)器名不能重復(fù)。
    • before|after 代表觸發(fā)器語句執(zhí)行時間,如果是before,就是在insert delete update操作之前執(zhí)行觸發(fā)器語句;after就是之后。
    • 事件就是insert delete update操作中的一個。
    • for each row 是代表任何記錄執(zhí)行對應(yīng)操作都會觸發(fā)器。
    • 觸發(fā)器語句就是觸發(fā)器觸發(fā)時要執(zhí)行的語句。
    • 比如:下面是一個當(dāng)插入新用戶時,在用戶創(chuàng)建時間表中插入一條新數(shù)據(jù),是當(dāng)前時間。
      create trigger trigger_addUserTime 
      before
       insert 
      on user_info 
      for each row 
      insert into usercreatetime(create_time) values(now());
create table user_info(
id int primary key auto_increment,
username varchar(20) not null,
password varchar(20) not null
)

create table usercreatetime(
id int primary key auto_increment,
create_time datetime
);

create trigger trigger_addUserTime before insert on user_info for each row insert into usercreatetime(create_time) values(now());

insert into user_info(username,password) values("admin","admin888");

select * from usercreatetime;

多條觸發(fā)器語句情況:

  • 需要將多條語句包裹在begin end中
    • 比如:image
  • 但要注意,上述情況適用于非命令行模式(上面是在navicat中運行的),如果要命令行中執(zhí)行需要修改命令結(jié)束符(mysql命令默認以“;”為語句結(jié)束符,如果我們不修改,那么鍵入一條觸發(fā)器語句并以;結(jié)束時就會認為語句已經(jīng)結(jié)束,然后就會因為語句不完整報錯)【delimiter 自定義符號-- 臨時修改語句結(jié)束符為指定符號】。
    • 【將結(jié)束符定義成$$就可以在觸發(fā)器語句中使用;結(jié)束】
        delimiter $$ -- 一般定義成$$
        create trigger 觸發(fā)器名 before|after 事件 on 表名 for each row 
        begin 
          語句;語句;
        end 
        $$
        
        delimiter ;
        -- 示例
        delimiter $$ -- 一般定義成$$
        create trigger trigger_addUserTime23 before insert on user_info for each row 
        begin 
        insert into usercreatetime(create_time) values(now());
        insert into usercreatetime(create_time) values(now());
        end 
        $$
        delimiter ;
    • imageimage


查看觸發(fā)器:

  • 使用show triggers\G 查看所有觸發(fā)器image
  • 在數(shù)據(jù)庫information_schema中通過查看觸發(fā)器表,來查看觸發(fā)器:使用select * from  triggers\G;【當(dāng)然可以以觸發(fā)器名作為where條件查找數(shù)據(jù)】image
  • 查看觸發(fā)器創(chuàng)建語句:show create trigger 觸發(fā)器名\G;


刪除觸發(fā)器:

  • 使用drop trigger 觸發(fā)器名;來刪除觸發(fā)器


觸發(fā)器的新舊記錄引用:

  • 對于某些情況有時候可能需要引用一下之前的數(shù)據(jù),比如增加學(xué)生數(shù)需要知道之前的學(xué)生數(shù)
  • new是新插入的數(shù)據(jù),old是原來的數(shù)據(jù)【插入的時候沒有舊數(shù)據(jù),刪除沒有新數(shù)據(jù),更新既有舊又有新。(這里指的是事件類型)】
  • 使用odl\new.字段名來引用數(shù)據(jù)。(注意引用的是觸發(fā)觸發(fā)器(事件)的語句的數(shù)據(jù))
  • 下面是一個例子:(當(dāng)插入學(xué)生記錄時,通過new.name獲取新插入的學(xué)生的名字,然后將new.name插入到另一個表中)
      create table student(
      id int primary key auto_increment,
      name varchar(15) not null,
      gender varchar(15) not null
      );
      
      create table stu_info(
      name varchar(15) not null
      );
      
      create trigger addCount before insert on student 
      for each row 
      insert into stu_info values(new.name);
      
      insert into student(name,gender) values("lilei","male");
      select * from stu_info;

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

希望本文所述對大家MySQL數(shù)據(jù)庫計有所幫助。

相關(guān)文章

  • Navicat連接MySQL時報10060、1045錯誤及my.ini位置問題

    Navicat連接MySQL時報10060、1045錯誤及my.ini位置問題

    這篇文章主要介紹了Navicat連接MySQL的10060及1045報錯,my.ini位置,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • innodb系統(tǒng)表空間維護方法

    innodb系統(tǒng)表空間維護方法

    下面小編就為大家?guī)硪黄猧nnodb系統(tǒng)表空間維護方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • mysql 8.0 錯誤The server requested authentication method unknown to the client解決方法

    mysql 8.0 錯誤The server requested authentication method unkno

    在本篇文章里小編給大家整理的是關(guān)于mysql 8.0 錯誤The server requested authentication method unknown to the client解決方法,有此需要的朋友們可以學(xué)習(xí)下。
    2019-08-08
  • MySQL安裝出現(xiàn)starting the server報錯的解決方案

    MySQL安裝出現(xiàn)starting the server報錯的解決方案

    如果電腦是第一次安裝MySQL,一般不會出現(xiàn)這樣的報錯,如下圖所示,本文主要介紹了MySQL安裝出現(xiàn)starting the server報錯的解決方案,感興趣的可以了解一下
    2024-07-07
  • 從0到1學(xué)會MySQL單表查詢

    從0到1學(xué)會MySQL單表查詢

    這篇文章主要給大家介紹了關(guān)于如何從0到1學(xué)會MySQL單表查詢的相關(guān)資料,單表查詢是指從一張表數(shù)據(jù)中查詢所需的數(shù)據(jù),文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • MySQL的幾種安裝方式及配置問題小結(jié)

    MySQL的幾種安裝方式及配置問題小結(jié)

    這篇文章主要介紹了MySQL的幾種安裝方式及配置,然后在文章底部給大家介紹了安裝過程中的問題總結(jié),非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-07-07
  • 深入淺析Mysql聯(lián)合索引最左匹配原則

    深入淺析Mysql聯(lián)合索引最左匹配原則

    這篇文章主要介紹了Mysql聯(lián)合索引最左匹配原則,使用聯(lián)合索引的好處多多,具體內(nèi)容詳情大家跟隨腳本之家小編一起學(xué)習(xí)吧
    2018-06-06
  • mysql 計算函數(shù)詳情

    mysql 計算函數(shù)詳情

    這篇文章主要介紹了mysql 計算函數(shù),函數(shù)沒有SQL的可移植性強 能運行在多個系統(tǒng)上的代碼稱為可移植的(portable)。相對來說,多數(shù)SQL語句是可移植的,在SQL實現(xiàn)之間有差異時,這些差異通常不那么難處理,下面來看看文章的具體內(nèi)容吧
    2021-10-10
  • MySQL與Mongo簡單的查詢實例代碼

    MySQL與Mongo簡單的查詢實例代碼

    本文通過一個實例給大家用MySQL和mongodb分別寫一個查詢,本文圖片并茂給大家介紹的非常詳細,感興趣的朋友參考下吧
    2016-10-10
  • Mysql5.7.17 winx64.zip解壓縮版安裝配置圖文教程

    Mysql5.7.17 winx64.zip解壓縮版安裝配置圖文教程

    這篇文章主要介紹了Mysql5.7.17 winx64.zip解壓縮版安裝配置圖文教程,需要的朋友可以參考下
    2018-03-03

最新評論

巍山| 都江堰市| 沾益县| 外汇| 长垣县| 德安县| 新宁县| 汉中市| 内丘县| 社旗县| 乐都县| 怀安县| 肇东市| 南平市| 来宾市| 永兴县| 星子县| 五常市| 桃园县| 玛纳斯县| 南投县| 噶尔县| 新疆| 定边县| 彩票| 绥棱县| 宁都县| 香港 | 科技| 专栏| 肃南| 金堂县| 驻马店市| 泽州县| 丰台区| 于田县| 张家界市| 通辽市| 新龙县| 松阳县| 阿合奇县|