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

MySQL 觸發(fā)器的基礎(chǔ)操作(六)

 更新時間:2016年08月30日 10:25:37   作者:ZJDWHD  
這篇文章主要為大家詳細(xì)介紹了MySQL 觸發(fā)器的基礎(chǔ)操作,告訴大家什么是MySQL觸發(fā)器,如何查看觸發(fā)器,感興趣的小伙伴們可以參考一下

1.為什么使用觸發(fā)器: 

    在MySQL數(shù)據(jù)庫中,數(shù)據(jù)庫對象表是存儲和操作數(shù)據(jù)的邏輯結(jié)構(gòu),而數(shù)據(jù)庫對象觸發(fā)器則用來實現(xiàn)由一些表事件觸發(fā)的某個操作。在數(shù)據(jù)庫系統(tǒng)中,當(dāng)執(zhí)行表事件時,則會激活觸發(fā)器,從而執(zhí)行器包含的操作。觸發(fā)器的操作包含創(chuàng)建、查看、刪除。 

    觸發(fā)器是數(shù)據(jù)庫對象之一,該對象與編程語言 中的函數(shù)非常類似,都需要聲明、執(zhí)行等。但是觸發(fā)器的執(zhí)行不是由程序調(diào)用,也不是由手工啟動,而是由事件來觸發(fā)、激活從而實現(xiàn)執(zhí)行。例如:在學(xué)生表中有學(xué)生名字、學(xué)生總數(shù)字段,每當(dāng)添加一條學(xué)生記錄時,學(xué)生的總數(shù)就必須同時改變。對于這個實例可以創(chuàng)建一個觸發(fā)器,每次添加一條學(xué)生記錄時,就執(zhí)行一次計算學(xué)生總數(shù)的操作,這樣就可保證每次添加一條學(xué)生記錄后,學(xué)生總數(shù)和學(xué)生記錄數(shù)一致。MySQL中在觸發(fā)如下DELETE、INSERT、UPDATE語句時,就會自動執(zhí)行所設(shè)置的操作,其他SQL語句則不會激活觸發(fā)器。之所以會經(jīng)常使用觸發(fā)器,是因為該對象能夠加強(qiáng)數(shù)據(jù)庫表中數(shù)據(jù)的完整性約束和業(yè)務(wù)規(guī)則等。

2.創(chuàng)建觸發(fā)器: 
    按照激活觸發(fā)器時所執(zhí)行的語句條目,可以將觸發(fā)器分為“一個執(zhí)行語句的觸發(fā)器”和“多個執(zhí)行語句的觸發(fā)器” 

2.1 創(chuàng)建有一條執(zhí)行語句的觸發(fā)器:

語法形式為:

create trigger trigger_name 
  before | after trigger_event
    on table_name for each row trigger_stmt

//trigger_name 參數(shù)表示索要創(chuàng)建的觸發(fā)器的名字,觸發(fā)器的名字不能重復(fù)。建議觸發(fā)器的命名為trigger_xxx或者tri_xxx;
before和after參數(shù)指定了觸發(fā)器執(zhí)行的時間,before:指在觸發(fā)器事件之前執(zhí)行觸發(fā)器語句,after:指在觸發(fā)器事件之后執(zhí)行觸發(fā)器語句;
trigger_event表示觸發(fā)事件,即觸發(fā)器執(zhí)行條件,包delete、insert、update語句;table_name觸發(fā)事件操作表的名字;
for each row表示任何一條記錄上的操作滿足觸發(fā)事件都會觸發(fā)該觸發(fā)器;trigger_stmt表示激活觸發(fā)器后被執(zhí)行的語句。

示例:

create trigger tri_diaryteim 
  before insert on t_dept for each row
    insert into t_diary values(null,'t_dept',now());
//功能說明:向部門表插入一條記錄之前向表t_diary插入當(dāng)前時間記錄。

2.2 創(chuàng)建包含多條執(zhí)行語句的觸發(fā)器:

語法形式如下:

create trigger trigger_name
  before|after trigger_event
    on table_name for each row
      begin
      trigger_stmt
      end

//比“只有一條執(zhí)行語句的觸發(fā)器”語法多了兩個關(guān)鍵字begin和end,在這兩個關(guān)鍵字之間是所要執(zhí)行的多個執(zhí)行語句的內(nèi)容,執(zhí)行語句之間用分號隔開。
在mysql中,一般情況下“;”符號作為語句的結(jié)束符號,可是在創(chuàng)建觸發(fā)器時,需要用到“;”符號作為執(zhí)行語句的結(jié)束符號。
為了解決該問題,可以使用關(guān)鍵字DELIMITER語句,例如:"DELIMITER$$",可以用來將結(jié)束符號設(shè)置為“$$”.

示例:

DELIMITER $$
create trigger tri_diarytime2
 after insert 
 on t_dept for each row
  begin 
  insert into t_diary values(null,'t_dept',now());
  insert into t_diary values(null,'t_dept',now());
  end
  $$
    DELIMITER;

3.查看觸發(fā)器: 

3.1 通過SHOW TRIGGERS語句查看觸發(fā)器:

語法為:
show triggers \G

3.2 通過查看系統(tǒng)表triggers實現(xiàn)查看觸發(fā)器:

操作語句為;

use information_schema;
select * from triggers \G
select * from triggers where trigger_name='tri_diarytime2' \G //查看指定觸發(fā)器

3.刪除觸發(fā)器:

語法為:
drop trigger trigger_name;

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • mysql 5.7.17 winx64安裝配置教程

    mysql 5.7.17 winx64安裝配置教程

    這篇文章主要為大家詳細(xì)介紹了mysql 5.7.17 winx64安裝配置教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 詳細(xì)解讀分布式鎖原理及三種實現(xiàn)方式

    詳細(xì)解讀分布式鎖原理及三種實現(xiàn)方式

    這篇文章從三種基于不同形式的分布式鎖的實現(xiàn),數(shù)據(jù)庫、緩存和zookeeper,內(nèi)容比較詳細(xì),具有一定參考價值,需要的朋友可以了解下。
    2017-10-10
  • mysql中如何用varchar字符串按照數(shù)字排序

    mysql中如何用varchar字符串按照數(shù)字排序

    這篇文章主要介紹了mysql中用varchar字符串按照數(shù)字排序方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 最新評論

    牙克石市| 新干县| 揭西县| 安泽县| 宜兰县| 梅河口市| 阿坝| 三穗县| 阜宁县| 罗江县| 通河县| 原阳县| 阳原县| 山西省| 怀宁县| 舞钢市| 麻栗坡县| 淄博市| 岳阳市| 舒兰市| 普兰店市| 南通市| 林州市| 陵川县| 汉中市| 裕民县| 镇雄县| 广东省| 宝山区| 上虞市| 拉孜县| 隆德县| 布尔津县| 灵寿县| 壤塘县| 沭阳县| 富川| 灵丘县| 永顺县| 滁州市| 青川县|