MySQL 如何创建和使用MySQL触发器?

MySQL 如何创建和使用MySQL触发器?

要创建一个新触发器,我们需要使用CREATE TRIGGER语句。它的语法如下−

CREATE TRIGGER 触发器名称 触发时间 触发事件
ON 表名
FOR EACH ROW
BEGIN
...
END;

在这里,

  • 触发器名称 是触发器的名称,必须放在CREATE TRIGGER语句之后。 触发器名称的命名规则可以是 [触发时间] _ [表名] _ [触发事件]。例如,before_student_update或after_student_insert可以是触发器的名称。
  • 触发时间 是触发器的激活时间,它可以是BEFORE或AFTER。定义触发器时必须指定激活时间。如果我们想在对表进行更改之前处理操作,则必须使用BEFORE;如果我们想在对表进行更改后处理操作,则必须使用AFTER。
  • 触发事件 可以是INSERT、UPDATE或DELETE。此事件会导致触发器被调用。一个触发器只能被一个事件调用。要定义由多个事件调用的触发器,我们必须为每个事件定义多个触发器。
  • 表名 是表的名称。实际上,触发器始终与特定表相关联。没有表,触发器就不存在,因此我们必须在“ON”关键字之后指定表名。
  • BEGIN…END 是我们将定义触发器逻辑的代码块。

阅读更多:MySQL 教程

示例

假设我们想在创建如下的Student_age表上应用触发器−

mysql> Create table Student_age(age INT, Name Varchar(35));
Query OK, 0 rows affected (0.80 sec)

现在,如果有人尝试插入年龄<0,则以下触发器将自动插入age = 0。

mysql> DELIMITER //
mysql> Create Trigger before_inser_studentage BEFORE INSERT ON student_age FOR EACH ROW
BEGIN
IF NEW.age < 0 THEN SET NEW.age = 0;
END IF;
END //
Query OK, 0 rows affected (0.30 sec)

现在,为了调用此触发器,我们可以使用以下语句−

mysql> INSERT INTO Student_age(age, Name) values(30, 'Rahul');
Query OK, 1 row affected (0.14 sec)

mysql> INSERT INTO Student_age(age, Name) values(-10, 'Harshit');
Query OK, 1 row affected (0.11 sec)

mysql> Select * from Student_age;
+------+---------+
| age  | Name    |
+------+---------+
| 30   | Rahul   |
| 0    | Harshit |
+------+---------+
2 rows in set (0.00 sec)

上面的结果集表明,在表中插入负值会导致触发器插入0。

上面是将触发器事件设置为INSERT和触发时间设置为BEFORE的示例。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程