数据库MySQL/mariadb知识点——触发器
觸發器
觸發器:trigger,是指事先為某張表綁定一段代碼,當表中的某些內容發生改變(增、刪、改)的時候,系統會自動觸發代碼并執行。
觸發器包含三個要素,分別為
每張表只能擁有一種觸發時間的一種事件類型的觸發器,即每張表最多可以擁有 6 種觸發器;即:BEFORE INSERT、BEFORE UPDATE、BEFORE DELETE、AFTER INSERT、AFTER UPDATE、AFTER?DELETE。
創建觸發器
創建觸發器語法如下
mysql CREATE [DEFINER = { user | CURRENT_USER }] 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); #給個初識值0MariaDB [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 | +-----------+
轉載于:https://www.cnblogs.com/Gmiaomiao/p/9207464.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的数据库MySQL/mariadb知识点——触发器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis 字符串数据(string)
- 下一篇: SQL Server创建Job, 实现执