mysql學習筆記之五(觸發器),mysql學習筆記

來源:互聯網
上載者:User

mysql學習筆記之五(觸發器),mysql學習筆記
觸發器(trigger)是mysql的資料庫物件之一,該對象與程式設計語言中的函數非常類似,都需要聲明、執行,但是觸發器的執行不是由程式調用,也不是手工啟動,而是由事件來觸發,啟用從而實現執行。

執行個體:
1、學生表中擁有欄位學生姓名,欄位學生總數,每當添加一條學生記錄時,學生總數就必須同時改變。
2、在顧客資訊表中擁有欄位顧客名字,欄位顧客電話和欄位顧客地址縮寫,每當添加一條關於顧客記錄時,都需要檢查電話號碼格式是否正確,顧客地址縮寫是否正確。
總之,需要在表發生更改時,自動進行一些處理,如檢查資料合法性,觸動其他欄位更新,mysql的約束裡沒有欄位大小範圍的約束。
mysql在觸發如下語句時,就會自動執行所設定的操作:
1、DELETE
2、INSERT
3、UPDATE
其他sql語句則不會啟用觸發器


一個表在相同觸發時間的相同觸發時間,只能建立一個觸發器。因此,對於有經驗的使用者,當在建立觸發器之前,需要查看mysql軟體中是否已經存在該標示符的觸發器和觸發器的相關事件。


一、建立
1、建立有一條執行語句的觸發器
CREATE TRIGGER TRIGGERNAME
BEFORE|AFTER TRIGGER_EVENT

ON TABLE_NAME FOR EACH ROW 

TRIGGER_STMT

BEFORE和AFTER
參數指定了觸發器執行的時間
trigger_EVENT
參數表示了觸發事件,即觸發器執行條件,包含delete,insert,update;
for each row 
參數表示任何一條記錄上的操作滿足觸發事件都會觸發觸發器;
trigger_stmt  
參數表示啟用觸發器後被執行的語句
例:
建立兩個表t_dept和t_diary
create table t_dept(
detpno int,
dname varchar(20),
loc varchar(20)
);
create table t_diary(
diaryno int primary key,
tablename varchar(20),
diarytime datetime
);
desc t_dept;
desc t_diary;
create trigger tri_diarytime
before insert
on t_dept for each row

insert into t_diaty values(null,'t_dept',now());

insert into t_dept values(1,'cjgongdept','shanxi');
驗證:
select * from t_diary;
2、建立包含多條執行語句的觸發器
create trigger triggername
before|after trigger_event
on tablename for each row 
begin
trigger_stmt
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());
on
$$
delimiter ;
insert into t_dept values(2,'cjgongdept','shanxi');
驗證:
select * from t_diary;
二、查看
show triggers\G
三、刪除
drop trigger triggername
show triggers\G

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.