Mysql那些事兒之(十)觸發器一

Mysql那些事兒之(十)觸發器一

 

相關鏈接:

Mysql那些事兒之(一)mysql的安裝

/database/201210/162314.html;

Mysql那些事兒之(二)有關數據庫的操作

/database/201210/162315.html;

Mysql那些事兒之(三)有關數據表的操作

/database/201210/162316.html;

Mysql那些事兒之(四)數據表數據查詢操作

/database/201210/162317.html;

Mysql那些事兒之(五)操作時間

/database/201210/162318.html;

Mysql那些事兒之(六)字符串模式匹配

/database/201210/163969.html;

Mysql那些事兒之(七)深入select查詢

/database/201210/163970.html;

Mysql那些事兒之(八)索引

/database/201210/163971.html;

Mysql那些事兒之(九)常用的函數

/database/201210/164229.html

 

mysql從5.0.2版本開始支持觸發器的功能。

觸發器是什麼?觸發器就是與表有關的數據庫對象,在滿足定義的條件時觸發,並且執行觸發器中定義的語句。

我們來看一下觸發器的語法結構:

 

Sql代碼  

create trigger trigger_name trigger_time trigger_event  

on table_name  

for each row  

begin  

   trigger_stmt  

end;  

 

trigger_name是說明觸發器的名稱;

trigger_time是說明觸發器的時間,after、before;

trigger_event是說明觸發器的事件,比如delete、update、insert;

trigger_stmt是說明觸發器要執行的事物語句,也就是你要幹什麼的東西,寫在這裡。

   www.aiwalls.com  

舉例:

建立數據庫:

 

Sql代碼  

create database db_test;  

建立film表:

  www.aiwalls.com  

Sql代碼  

create table film(  

id smallint unsigned not null,  

name varchar(40),  

txt text,  

primary key(id)  

);  

 

在這兒寫一個簡單的觸發器示例:

 

業務規則是 在向film表插入數據時,同時向日志表film_text中也插入一條數據.

   www.aiwalls.com  

當然還得建立film_text表:

 

Sql代碼  

create table film_text(  

id smallint unsigned not null auto_increment,  

name varchar(40),  

txt text,  

primary key(id)  

);  

 

現在可以按照觸發器的語法結構來寫觸發器瞭。

觸發器代碼:

 

Sql代碼  

create trigger trigger_film  –trigger_film為觸發器的名稱  

after                                   –after為觸發器要發生的時間  

insert                                 –insert為觸發器發生時的條件  插入操作  

on film                                –建立觸發器的表名  

for each row                      –說明觸發器為行級觸發器  

begin  

   –觸發器要執行的邏輯  

  insert into film_text(id,name,txt) values(new.id,new.name,new.txt);  

end;  

   www.aiwalls.com  

運行完這個觸發器之後,當在另一個film表裡插入數據後,film_text裡也將增加一條數據。

 

發佈留言