觸發器:trigger
,是指事先為某張表繫結一段**,當表中的某些內容發生改變(增、刪、改)的時候,系統會自動觸發**並執行。
觸發器包含三個要素,分別為
事件型別:增刪改,即insert
、delete
和update
觸發物件:表中的每一條記錄(行),即整張表
每張表只能擁有一種觸發時間的一種事件型別的觸發器,即每張表最多可以擁有 6 種觸發器;即:before insert、before update、before delete、after insert、after update、after delete。
建立觸發器語法如下
mysql create [definer = ] trigger trigger_name trigger_time trigger_event on tbl_name for each row trigger_body
其中:trigger_name:標識觸發器名稱,使用者自行指定;
trigger_time:標識觸發時機,取值為 before 或 after;
trigger_event:標識觸發事件,取值為 insert、update 或 delete;
tbl_name:標識建立觸發器的表名,即在哪張表上建立觸發器;
trigger_stmt:觸發器程式體,可以是一句sql語句,或者用 begin 和 end 包含的多條語
和檢視資料庫(show databases;)檢視**(show tables;)一樣,檢視觸發器的語法如下:
show triggers;
和刪除資料庫、刪除**一樣,刪除觸發器的語法如下:
drop trigger trigger_name;
建立觸發器,在向學生表insert資料時,學生數增加,刪除學生資訊時,學生數減少。
mariadb [testdb]> create table students_info (id tinyint(2) not null auto_increment,name varchar(30) default null,primary key(id)); #建立一張學生資訊表mariadb [testdb]> create table students_count (stu_count tinyint(2) default 0); #建立一張學生數量表
mariadb [testdb]> insert into students_count values(0); #給個初識值0
mariadb [testdb]> create trigger trigger_students_count_insert
-> after insert
-> on students_info for each row
-> update students_count set stu_count=stu_count+1;
query ok, 0 rows affected (0.00 sec)
mariadb [testdb]> create trigger trigger_students_count_delete
-> after delete
-> on students_info for each row
-> update students_count set stu_count=stu_count-1;
query ok, 0 rows affected (0.01 sec)
mariadb [testdb]> insert students_info(id,name) values (1,'tom'),(2,'maria');mariadb [testdb]> select * from students_info;
+----+-------+
| id | name |
+----+-------+
| 1 | tom |
| 2 | maria |
+----+-------+
mariadb [testdb]> select * from students_count; #插入記錄,觸發事件,數量增加為2
+-----------+
| stu_count |
+-----------+
| 2 |
+-----------+
mariadb [testdb]> delete from students_info where id=1;
mariadb [testdb]> select * from students_info;
+----+-------+
| id | name |
+----+-------+
| 2 | maria |
+----+-------+
mariadb [testdb]> select * from students_count; #刪除記錄,數量減1
+-----------+
| stu_count |
+-----------+
| 1 |
+-----------+
TestLink知識點Mantis知識點
testlink知識點 1 testlink系統提供了六種角色 a guest 只有讀的許可權,適合於檢視測試用例和測試需求,以及專案分析的使用者。b testdesigner 可以開展測試用例和測試需求的所有工作。c tester 只能執行測試用例。d senior tester 可以檢視和維護測...
python大一知識點 python知識點複習
放假歸來,這幾天複習了一下好久不用的python,總結了一下知識點。語法基礎tuple與list的異同都由多個元素組成 tuple由 組成,list由組成 tuple不可變,list可變 tuple表示的是一種結構,而list表示的是多個事物的集合 tuple操作比list快 字串用法要點 轉義符和...
mysql常用知識點 mysql 常用知識點。
mysql u root p show databases show tables select from abc order by id limit 0,10 create database bbb exit mysqldump u root p game home backup.sql mysq...