MYSQL從0到1(七) 觸發器

2021-09-27 12:51:07 字數 1690 閱讀 6906

觸發器是與表有關的資料庫物件,在滿足定義條件時觸發,並執行觸發器中定義的語句集合。

觸發器的特性:

1、有begin end體,begin end;之間的語句可以寫的簡單或者複雜

2、什麼條件會觸發:i、d、u

3、什麼時候觸發:在增刪改前或者後

4、觸發頻率:針對每一行執行

5、觸發器定義在表上,附著在表上。

也就是由事件來觸發某個操作,事件包括insert語句,update語句和delete語句;可以協助應用在資料庫端確保資料的完整性。

!!盡量少使用觸發器,不建議使用。

假設觸發器觸發每次執行1s,insert table 500條資料,那麼就需要觸發500次觸發器,光是觸發器執行的時間就花費了500s,而insert 500條資料一共是1s,那麼這個insert的效率就非常低了。因此我們特別需要注意的一點是觸發器的begin end;之間的語句的執行效率一定要高,資源消耗要小。

觸發器盡量少的使用,因為不管如何,它還是很消耗資源,如果使用的話要謹慎的使用,確定它是非常高效的:觸發器是針對每一行的;對增刪改非常頻繁的表上切記不要使用觸發器,因為它會非常消耗資源。 

create trigger 觸發器名 before|after 觸發事件 on 表名 for each row 執行語句;
觸發事件:

例子:建立乙個名字叫newproduct的觸發器,在操作insert後觸發,該觸發器質指定了對每個插入行執行,當對每個成功的插入,都顯示product added資訊

create trigger newproduct 

after insert on products 

for each row select  'product added';

每個表每個事件只允許乙個觸發器,因此,每個表最多支援6個觸發器。

2、建立有多個執行語句的觸發器

create trigger 觸發器名 before|after 觸發事件

on 表名 for each row

begin

執行語句列表

end;

例2:定義乙個觸發器,一旦有滿足條件的刪除操作,就會執行begin和end中的語句

mysql> delimiter ||

mysql> create trigger trig2 before delete

-> on work for each row

-> begin

->   insert into time values(now());

->   insert into time values(now());

-> end||

mysql> delimiter ;

drop trigger [if exists] [schema_name.]trigger_name

刪除觸發器之後最好使用上面的方法檢視一遍;同時,也可以使用database.trig來指定某個資料庫中的觸發器。

tips:

如果不需要某個觸發器時一定要將這個觸發器刪除,以免造成意外操作,這很關鍵。

觸發器 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語句檢視觸發器...