Mysql那些事兒之(十)觸發器一
相關鏈接:
Mysql那些事兒之(一)mysql的安裝
http://www.BkJia.com/database/201210/162314.html;
Mysql那些事兒之(二)有關數據庫的操作
http://www.BkJia.com/database/201210/162315.html;
Mysql那些事兒之(三)有關數據表的操作
http://www.BkJia.com/database/201210/162316.html;
Mysql那些事兒之(四)數據表數據查詢操作
http://www.BkJia.com/database/201210/162317.html;
Mysql那些事兒之(五)操作時間
http://www.BkJia.com/database/201210/162318.html;
Mysql那些事兒之(六)字符串模式匹配
http://www.BkJia.com/database/201210/163969.html;
Mysql那些事兒之(七)深入select查詢
http://www.BkJia.com/database/201210/163970.html;
Mysql那些事兒之(八)索引
http://www.BkJia.com/database/201210/163971.html;
Mysql那些事兒之(九)常用的函數
http://www.BkJia.com/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.2cto.com
舉例:
建立數據庫:
Sql代碼
create database db_test;
建立film表:
www.2cto.com
Sql代碼
create table film(
id smallint unsigned not null,
name varchar(40),
txt text,
primary key(id)
);
在這兒寫一個簡單的觸發器示例:
業務規則是 在向film表插入數據時,同時向日志表film_text中也插入一條數據.
www.2cto.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.2cto.com
運行完這個觸發器之後,當在另一個film表裡插入數據後,film_text裡也將增加一條數據。