觸發器 mysql觸發器

2021-10-14 16:46:14 字數 3303 閱讀 8704

觸發器是一種特殊的儲存過程,它在插入、刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。

和儲存過程一樣,很少使用。

(1).觸發器的作用

(2).建立觸發器

建立測試環境

mysql> create database test_db;query ok, 1 row affected (0.00 sec) mysql> use test_db;database changedmysql> create table user_tb(id int,name varchar(20));query ok, 0 rows affected (0.03 sec) mysql> create table job_tb(uid int,job varchar(20));query ok, 0 rows affected (0.04 sec)
建立觸發器語句如下:  

create trigger [觸發器名稱] [before|after] [insert|update|delete] on [表名] for each row[觸發的動作,乙個update或insert或delete的sql語句;][新的結束字元]
before和after是觸發時間,insert、update和delete是監視事件。

並且因為包含乙個觸發動作的sql語句,所以也要使用delimiter [新字元]。

例項:

mysql> delimiter //mysql> create trigger insert_job after insert on user_tb for each row    -> insert into job_tb values (1,'老師');    -> //query ok, 0 rows affected (0.00 sec) mysql> insert into user_tb values(1,'張三')//query ok, 1 row affected (0.00 sec) mysql> select * from user_tb//+------+--------+| id   | name   |+------+--------+|    1 | 張三   |+------+--------+1 row in set (0.00 sec) mysql> select * from job_tb//+------+--------+| uid  | job    |+------+--------+|    1 | 老師   |+------+--------+1 row in set (0.00 sec)
注意:觸發器與監視表不能是同乙個,否則會報1442的錯誤。

(3).檢視觸發器

show create trigger [觸發器名稱];  檢視指定觸發器

show triggers;  檢視所有觸發器

mysql> show create trigger insert_job\g  //檢視指定觸發器*************************** 1. row ***************************               trigger: insert_job              sql_mode: only_full_group_by,strict_trans_tables,no_zero_in_date,no_zero_date,error_for_division_by_zero,no_auto_create_user,no_engine_substitutionsql original statement: create definer=`root`@`localhost` trigger insert_job after insert on user_tb for each rowinsert into job_tb values (1,'老師')  character_set_client: utf8  collation_connection: utf8_general_ci    database collation: utf8_general_ci               created: 2019-06-13 11:51:28.871 row in set (0.00 sec) mysql> show triggers\g  //檢視所有觸發器*************************** 1. row ***************************             trigger: insert_job               event: insert               table: user_tb           statement: insert into job_tb values (1,'老師')              timing: after             created: 2019-06-13 11:51:28.87            sql_mode: only_full_group_by,strict_trans_tables,no_zero_in_date,no_zero_date,error_for_division_by_zero,no_auto_create_user,no_engine_substitution             definer: root@localhostcharacter_set_client: utf8collation_connection: utf8_general_ci  database collation: utf8_general_ci1 row in set (0.00 sec)
(4).刪除觸發器drop trigger [觸發器名稱];

mysql> drop trigger insert_job//query ok, 0 rows affected (0.00 sec) mysql> show triggers\gempty set (0.00 sec)
(5).擴充套件由於觸發器其實是一種特殊的儲存過程,所以觸發動作其實可以使用begin [sql語句集] end來擴充套件其使用方法!

·end·php開源社群高階·提公升·漲薪

mysql觸發器when MySQL觸發器

set quoted identifier on goset ansi nulls on goalter trigger trg risks on dbo.projectrisk for insert,update asbegin update projectrisk set classificat...

my sql 觸發器 mysql建立觸發器

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

my sql 觸發器 MySQL檢視觸發器

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