MySQL筆記之觸發器的應用

2022-09-29 22:21:21 字數 3186 閱讀 2927

建立觸發器

建立只有乙個執行語句的觸發器

複製** **如下:

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

on 表名 for each row 執行語句

其中,觸發器名引數指要建立的觸發器的名字

before和after引數指定了觸發執行的時間,在事件之前或是之後

for each row表示任何一條記錄上的操作滿足觸發事件都會觸發該觸發器

複製** **如下:

mysql> cre程式設計客棧ate trigger trig1 after insert

-> on work for each row

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

query ok, 0 rows affected (0.09 sec)

上面建立了乙個名為trig1的觸發器,一旦在work中有插入動作,就會自動往time表裡插入當前時間

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

複製** **如下:

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

on 表名 for each row

begin

執行語句列表

end其中,begin與end之間的執行語句列表引數表示需要執行的多個語句,不同語句用分號隔開

tips:一般情況下,mysql預設是以 ; 作為結束執行語句,與觸發器中需要的分行起衝突

為解決此問題可用delimiter,如:delimiter ||,可以將結束符號變成||

當觸發器建立完成後,可以用delimiter ;來將結束符號變成;

複製** **如下:

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

-> ||

query ok, 0 rows affected (0.06 sec)

mysql> delimiter ;

上面的語句中,開頭將結束符號定義為||,中間定義乙個觸發器,一旦有滿足條件的刪除操作

就會執行begin和end中的語句,接著使用||結束

最後使用delimiter ; 將結束符號還原

檢視觸發器

show triggers語句檢視觸發器資訊

複製** **如下:

mysql> show triggers\g;

*************************** 1. row ***************************

trigger: trig1

www.cppcns.com; event: insert

table: work

statement: insert into time values(now())

timing: after

created: null

sql_mode:

definer: root@localhost

character_set_client: utf8

collation_connection: utf8_general_ci

database collation: latin1_swedish_ci

結果會顯示所有觸發器的基本資訊

tips:show triggers語句無法查詢指定的觸發器

在triggers表中檢視觸發器資訊

複製** **如下:

mysql> select * from information_schema.triggers\g

*************************** 1. row ***************************

trigger_catalog: def

trigger_schema: person

trigger_name: trig1

event_manipulation: insert

event_object_catalog: def

event_object_schema: person

event_object_table: work

action_order: 0

action_condition: null

action_statement: insert into time values(now())

結果顯示了所有觸發器的詳細資訊,同時,該方法可以查詢制定觸發器的詳細資訊

複製** **如下:

mysql> select * from information_schema.triggers where trigger_name='trig1'\g

*************************** 1. row ***************************

&lmkyikqnbsp;      trigger_catalog: def

trigger_schema: person

trigger_name: trig1

event_manipulation: insert

event_object_catalog: def

event_object_schema: person

event_object_table: work

tips:所有觸發器資訊都儲存在information_schema資料庫下的triggers表中

可以使用select語句查詢,如果觸發器資訊過多,最好通過trigger_name欄位指定查詢

刪除觸發器

複製** **如下:

mysql> drop trigger trig1;

query ok, 0 rows affected (0.04 sec)

刪除觸發器之後最好使用上面的方法檢視一遍

同時,也可以使用database.trig來指定某個資料庫中的觸發器

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

本文標題: mysql筆記之觸發器的應用

本文位址: /shujuku/mysql/94510.html

mysql之觸發器詳解 MySQL之觸發器詳解

觸發器 trigger 監事某種情況,並出發某種操作。觸發器建立語法四要素 1 監視地點 table 2 監視事件 insert update delete 3 觸發時間 after before 4 觸發事件 insert update delete create trigger triggern...

MySQL之觸發器

觸發器是個特殊的儲存過程 當乙個預定義的事件發生的時候,被mysql自動呼叫 1 建立只有乙個執行語句的觸發器 create trigger trigger name trigger time trigger event on tb1 name for each row trigger stmttr...

MySQL之觸發器

觸發器 1.建立觸發器 r型別 insert update delete 格式 create trigger 觸發器名 觸發時間 觸發事件 on 表 from each now sql語句 新增一條資訊,顯示提示資訊 delimiter create trigger ct student after...