如何用觸發器管理MySQL資料庫

2021-04-17 06:30:49 字數 1767 閱讀 9969

在sql中,名詞觸發器指「在資料庫中為響應乙個特殊**中的某些事件而自動執行的程式**。」(wikipedia)說得簡單一些,它是在乙個特殊的資料庫事件,如insert或delete發生時,自動啟用的一段**。觸發器可方便地用於日誌記錄、對單個**到其他鏈結式**進行自動的「層疊式」更改、或保證對**關係進行自動更新。當乙個新整數值增加到資料庫域中時,自動更新執行的總數的**段是乙個觸發器。自動記錄對乙個特殊資料庫**所作更改的sql命令塊也是乙個觸發器例項。

觸發器是

mysql 5.x的新功能,隨著5.x**樹新版本的出現,這一功能也逐漸得到改善。在本文中,我將簡單介紹如何定義並使用觸發器,檢視觸發器狀態,並如何在使用完畢後刪除觸發器。我還將為你展示乙個觸發器在現實世界中的應用例項,並檢驗它對資料庫記錄的改變。

乙個簡單例項

通過簡單(雖然是人為的)例項來說明是了解mysql觸發器應用的最佳辦法。首先我們建立兩個單域的**。乙個**中為姓名列表(**名:data),另乙個**中是所插入字元的字元數(**名:chars)。我希望在data**中定義乙個觸發器,每次在其中插入乙個新姓名時,chars**中執行的總數就會根據新插入記錄的字元數目進行自動更新。(見列表a)

列表a

mysql> create table data (name varchar(255));

query ok, 0 rows affected (0.09 sec)

mysql> create table chars (count int(10));

query ok, 0 rows affected (0.07 sec)

mysql> insert into chars (count) values (0);

query ok, 1 row affected (0.00 sec)

mysql> create trigger t1 after insert on

data for each row update chars set count = count + char_length(new.name);

query ok, 0 rows affected (0.01 sec)

理解上面**的關鍵在於create trigger命令,它被用來定義乙個新觸發器。這個命令建立乙個新觸發器,假定的名稱為t1,每次有乙個新記錄插入到data**中時,t1就被啟用。

在這個觸發器中有兩個重要的子句: after insert子句表明觸發器在新記錄插入data**後啟用。 update chars set count = count + char_length(new.name)子句表示觸發器啟用後執行的sql命令。在本例中,該命令表明用新插入的data.name域的字元數來更新chars.count欄。這一資訊可通過內建的mysql函式char_length()獲得。

放在源**網域名稱前面的new關鍵字也值得注意。這個關鍵字表明觸發器應考慮域的new值(也就是說,剛被插入到域中的值)。mysql還支援相應的old字首,可用它來指域以前的值。

觸發器 mysql觸發器

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

my sql 觸發器 mysql建立觸發器

首先,我們來了解一下什麼是觸發器,觸發器,就是在對一張表資料進行增 insert 刪 delete 改 update 的時候,為了保持資料的一致性,對別的表也要進行相應的資料修改。我們都知道mysql最後事務提交後,資料是會儲存到磁碟上的,那麼每次在insert,delete,update時候舊資料...

my sql 觸發器 MySQL檢視觸發器

檢視觸發器是指檢視資料庫中已經存在的觸發器的定義 狀態和語法資訊等。mysql 中檢視觸發器的方法包括 show triggers 語句和查詢 information schema 資料庫下的 triggers 資料表等。本節將詳細介紹這兩種檢視觸發器的方法。show triggers語句檢視觸發器...