MySql觸發器應用總結

2021-06-28 22:23:23 字數 2748 閱讀 4191

1,個人理解

觸發器,從字面來理解,一觸即發的乙個器,簡稱觸發器(哈哈,個人理解),簡單理解就是,滿足一定條件就可觸發某個操作。

2,官方定義

觸發器(trigger)是個特殊的儲存過程,它的執行不是由程式呼叫,也不是手工啟動,而是由事件來觸發,比如當對乙個表進行操作( insert,delete, update)時就會啟用它執行。觸發器經常用於加強資料的完整性約束和業務規則等。 觸發器可以從 dba_triggers ,user_triggers 資料字典中查到。

觸發器有乙個非常好的特性就是:觸發器可以禁止或回滾違反引用完整性的更改,從而取消所嘗試的資料修改。

什麼意思,舉個例子解釋一下,街機遊戲大家都玩過吧,闖過一關,闖下一關,有一關沒闖過就要從第一關開始。觸發器根這個類似。

官方解釋如下

觸發程式視為單一交易中的一部份,因此可以由原觸發程式還原交易,如果在交易過程中偵測到嚴重的錯誤(如使用者中斷連線),則會自動還原整個交易。

他的作用很明顯了,可以保重資料的完整性,下面有乙個例項來說明他的好處,以及如果使編寫**不那麼複雜

create trigger 《觸發器名稱》 –觸發器必須有名字,最多64個字元,可能後面會附有分隔符.它和mysql中其他物件的命名方式基本相象.

觸發器有執行的時間設定:可以設定為事件發生前或後。

同樣也能設定觸發的事件:它們可以在執行insert、update或delete的過程中觸發。

on 《表名稱》 –觸發器是屬於某乙個表的:當在這個表上執行插入、 更新或刪除操作的時候就導致觸發器的啟用. 我們不能給同一張表的同乙個事件安排兩個觸發器。

for each row –觸發器的執行間隔:for each row子句通知觸發器 每隔一行執行一次動作,而不是對整個表執行一次。

《觸發器sql語句》 –觸發器包含所要觸發的sql語句:這裡的語句可以是任何合法的語句, 包括復合語句,但是這裡的語句受的限制和函式的一樣。

你必須擁有相當大的許可權才能建立觸發器(create trigger),如果你已經是root使用者,那麼就足夠了。這跟sql的標準有所不同。

1.觸發器的」自動性」

對程式設計師來說,觸發器是看不到的,但是他的確做事情了,如果不用觸發器的話,你更新了user表的name欄位時,你還要寫**去更新其他表裡面的冗餘字段,我舉例子,只是一張表,如果是幾張表都有冗餘欄位呢,你的**是不是要寫很多呢,看上去是不是很不爽呢。

2.觸發器的資料完整性

觸發器有回滾性,舉個例子,我發現我很喜歡舉子,就是你要更新五張表的資料,不會出現更新了二個張表,而另外三張表沒有更新。

但是如果是用php**去寫的話,就有可能出現這種情況的,比如你更新了二張表的資料,這個時候,資料庫掛掉了。你就鬱悶了,有的更新了,有的沒更新。這樣頁面顯示不一致了,變有bug了。

示例一  

delimiter //

create

trigger insertuser

before

insert

onuser

foreach

rowbegin

insert

into user_group(uid,gid) values(new.uid,'group4444444444');

end;//

delimiter ;

示例二

delimiter //

create

trigger insertuser

before

insert

onuser

foreach

rowbegin

if new.type=2

then

insert

into user_group(uid,gid) values(new.uid,'group4444444444');

else

insert

into user_group(uid,gid) values(new.uid,'group55555555555')

endif;

end;//

delimiter ;

示例三:

delimiter //

create

trigger insertuser

before

insert

onuser

foreach

rowbegin

if new.type=1

then

insert

into user_group(uid,gid) values(new.uid,'578d3369633b47bd9c1fe8bf905cbfb1');

endif;

if new.type=2 then

insert

into user_group(uid,gid) values(new.uid,'387bcd57fc5a4c3c9de83ee210fef661');

endif;

end;//

delimiter ;

觸發器 mysql觸發器

觸發器是一種特殊的儲存過程,它在插入 刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。和儲存過程一樣,很少使用。1 觸發器的作用 2 建立觸發器 建立測試環境 mysql create database test db query ok,1 row aff...

mysql觸發器簡單應用

建立儲存過程之前首先看mysql資料庫有沒開啟觸發器事件服務,否則無法建立觸發器.檢視方式 show variables like scheduler variable name value event scheduler off 如果顯示上面的結果就說明未開啟服務,需要在my.ini配置檔案的my...

mysql 觸發器簡單應用

after before表記錄操作之後還是之前記錄到日誌表 create table tbl student0101 name char 20 default null age int 11 default null tel char 11 not null primary key tel engi...