觸發器是一種特殊的儲存過程,它在插入、刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。
和儲存過程一樣,很少使用。
(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語句檢視觸發器...