什么是MySQL触发器以及如何创建它?

和我一样,您也是MySQL用户。恭喜,您已经选择了世界上最好,最受欢迎的开源数据库。现在,无需担心您的编程语言或框架,因为MySQL为应用程序开发人员提供了构建数据库驱动的信息系统所需的一切。今天,我将讨论MySQL触发器的全面知识,也称为SQL触发器。如果您精通技术,并且想要获取有关MySQL触发器的详细信息,那么可以阅读本文。

什么是MySQL触发器?

MySQL触发器是对关联的数据库表执行已定义的操作(例如INSERT,UPDATE或DELETE)时自动调用的数据库对象或存储程序。因此,如果要在MySQL上运行数据库触发器,则需要SUPERUSER特权。如果将网站托管在共享托管环境中,则不能运行任何触发器MySQL。

最好有一个VPS(虚拟专用服务器)或专用服务器来获得SUPERUSER权限,以便在MySQL中运行触发器。

主要有两种类型的SQL触发器:行级触发器和语句级触发器。

行级触发器每当您需要为每行插入,更新或删除事件时,都将激活或执行该触发器。例如,如果要删除50行,则应为受影响的50行自动调用数据库触发器50次。

语句级触发器:顾名思义,它对每个数据库事务执行一次,而不是更新,删除或插入多少行。

MySQL不支持语句级SQL触发器,而仅执行行级触发器。

什么是MySQL触发器以及如何创建它?

如何创建MySQL触发器?

CREATE TRIGGER [schema_name.]trigger_name
ON table_name
{FOR | AFTER | INSTEAD OF} {[INSERT] [,] [UPDATE] [,] [DELETE]}
AS
{sql_statements}

您要做的是?定义触发触发器时要执行的一组SQL语句。现在指定触发器何时执行,并由{FOR | 之后| INSTEAD OF}部分。INSERT,UPDATE,DELETE选项表示哪些SQL命令触发该触发器。

如果要删除或删除MySQL触发器,请运行以下命令:

DROP TRIGGER [schema_name.]trigger_name;

MySQL触发器示例:

打开SSH并创建一个数据库表,以便我们可以对其执行触发器:

mysql> CREATE TABLE student (age INT, name varchar(150));

现在,定义一个触发器,该触发器将在学生表的每个插入语句之前执行:

mysql> delimiter // 
mysql> CREATE TRIGGER agecheck BEFORE INSERT ON student FOR EACH ROW IF NEW.age < 0 
THEN SET NEW.age = 0; END IF;// 
Query OK, 0 rows affected (0.00 sec) mysql> delimiter ;

插入三个记录,以确认触发器功能:

mysql> INSERT INTO student VALUES (-10, 'david'), (20, 'sara'), (30, 'viktor');

这是输出:

mysql> SELECT * FROM student;
+——-+——-+ 
| age | name |
+——-+——-+
| 0 | David |
| 20 | Sara |
| 30 | Viktor |
+——-+——-+


作者介绍

用微信扫一扫

收藏