MySQL mariadb知識點 觸發器

2022-07-02 21:21:14 字數 2635 閱讀 5820

觸發器:trigger,是指事先為某張表繫結一段**,當表中的某些內容發生改變(增、刪、改)的時候,系統會自動觸發**並執行。

觸發器包含三個要素,分別為

事件型別:增刪改,即insertdeleteupdate

觸發物件:表中的每一條記錄(行),即整張表

每張表只能擁有一種觸發時間的一種事件型別的觸發器,即每張表最多可以擁有 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...