程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL 觸發器的基本操作(六)

MySQL 觸發器的基本操作(六)

編輯:MySQL綜合教程

MySQL 觸發器的基本操作(六)。本站提示廣大學習愛好者:(MySQL 觸發器的基本操作(六))文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL 觸發器的基本操作(六)正文


1.為何應用觸發器: 

    在MySQL數據庫中,數據庫對象表是存儲和操作數據的邏輯構造,而數據庫對象觸發器則用來完成由一些表事宜觸發的某個操作。在數據庫體系中,當履行表事宜時,則會激活觸發器,從而履行器包括的操作。觸發器的操作包括創立、檢查、刪除。 

    觸發器是數據庫對象之一,該對象與編程說話 中的函數異常相似,都須要聲明、履行等。然則觸發器的履行不是由法式挪用,也不是由手工啟動,而是由事宜來觸發、激活從而完成履行。例如:在先生表中有先生名字、先生總數字段,每當添加一條先生記載時,先生的總數就必需同時轉變。關於這個實例可以創立一個觸發器,每次添加一條先生記載時,就履行一次盤算先生總數的操作,如許便可包管每次添加一條先生記載後,先生總數和先生記載數分歧。MySQL中在觸發以下DELETE、INSERT、UPDATE語句時,就會主動履行所設置的操作,其他SQL語句則不會激活觸發器。之所以會常常應用觸發器,是由於該對象可以或許增強數據庫表中數據的完全性束縛和營業規矩等。

2.創立觸發器: 
    依照激活觸發器時所履行的語句條目,可以將觸發器分為“一個履行語句的觸發器”和“多個履行語句的觸發器” 

2.1 創立有一條履行語句的觸發器:

語法情勢為:

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

//trigger_name 參數表現索要創立的觸發器的名字,觸發器的名字不克不及反復。建議觸發器的定名為trigger_xxx或許tri_xxx;
before和after參數指定了觸發器履行的時光,before:指在觸發器事宜之前履行觸發器語句,after:指在觸發器事宜以後履行觸發器語句;
trigger_event表現觸發事宜,即觸發器履行前提,包delete、insert、update語句;table_name觸發事宜操作表的名字;
for each row表現任何一筆記錄上的操作知足觸發事宜都邑觸發該觸發器;trigger_stmt表現激活觸發器後被履行的語句。

示例:

create trigger tri_diaryteim 
  before insert on t_dept for each row
    insert into t_diary values(null,'t_dept',now());
//功效解釋:向部分表拔出一筆記錄之前向表t_diary拔出以後時光記載。

2.2 創立包括多條履行語句的觸發器:

語法情勢以下:

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

//比“只要一條履行語句的觸發器”語法多了兩個症結字begin和end,在這兩個症結字之間是所要履行的多個履行語句的內容,履行語句之間用分號離隔。
在mysql中,普通情形下“;”符號作為語句的停止符號,可是在創立觸發器時,須要用到“;”符號作為履行語句的停止符號。
為懂得決該成績,可使用症結字DELIMITER語句,例如:"DELIMITER$$",可以用來將停止符號設置為“$$”.

示例:

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.檢查觸發器: 

3.1 經由過程SHOW TRIGGERS語句檢查觸發器:

語法為:
show triggers \G

3.2 經由過程檢查體系表triggers完成檢查觸發器:

操作語句為;

use information_schema;
select * from triggers \G
select * from triggers where trigger_name='tri_diarytime2' \G //檢查指定觸發器

3.刪除觸發器:

語法為:
drop trigger trigger_name;

以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved