MySQL AFTER INSERT触发器

每当表上发生插入事件时,MySQL 中的AFTER INSERT触发器就会自动调用。在本文中,我们将学习如何创建AFTER INSERT触发器及其语法和示例。

一、MySQL AFTER INSERT触发器 语法

以下是在 MySQL 中创建AFTER INSERT 触发器的语法:

CREATE TRIGGER trigger_name   
AFTER INSERT  
ON table_name FOR EACH ROW  
trigger_body ;  

AFTER INSERT 触发器语法参数可以解释如下:

  • 首先,我们将指定要创建的触发器的名称。它在架构中应该是唯一的。
  • 其次,我们将指定触发器的动作时间,它应该是 AFTER INSERT 子句来调用触发器。
  • 第三,我们将指定与触发器关联的表的名称。它必须写在 ON 关键字之后。如果我们没有指定表名,触发器将不存在。
  • 最后,我们将指定包含一个或多个语句的触发器主体,以便在触发器被激活时执行。

如果我们要执行多个语句,我们将使用包含一组 SQL 查询的BEGIN END块来定义触发器的逻辑。请参阅以下语法:

DELIMITER $$   
CREATE TRIGGER trigger_name AFTER INSERT  
ON table_name FOR EACH ROW  
BEGIN  
   variable declarations  
   trigger code  
END$$  
DELIMITER ;  

限制

  • 我们可以访问新值,但不能在 AFTER INSERT 触发器中更改它们。
  • 我们无法访问OLD如果我们尝试访问 OLD 值,我们将收到错误消息,因为 INSERT 触发器上没有 OLD。
  • 我们不能在VIEW上创建 AFTER INSERT 触发器。

二、MySQL AFTER INSERT触发器 示例

让我们通过一个示例来了解如何使用MySQL中的CREATE TRIGGER语句创建 AFTER INSERT 触发器。

假设我们创建了一个名为“ student_info ”的表,如下所示:

CREATE TABLE student_info (  
  stud_id int NOT NULL,  
  stud_code varchar(15) DEFAULT NULL,  
  stud_name varchar(35) DEFAULT NULL,  
  subject varchar(25) DEFAULT NULL,  
  marks int DEFAULT NULL,  
  phone varchar(15) DEFAULT NULL,  
  PRIMARY KEY (stud_id)  
)  

接下来,我们将在这张表中插入一些记录,然后执行SELECT 语句来查看表中的数据,如下所示:

同样,我们将创建一个名为“student_detail”的新表,如下所示:

CREATE TABLE student_detail (  
  stud_id int NOT NULL,  
  stud_code varchar(15) DEFAULT NULL,  
  stud_name varchar(35) DEFAULT NULL,  
  subject varchar(25) DEFAULT NULL,  
  marks int DEFAULT NULL,  
  phone varchar(15) DEFAULT NULL,  
  Lasinserted Time,  
  PRIMARY KEY (stud_id)  
);  

接下来,我们将使用 CREATE TRIGGER 语句在student_info表上创建after_insert_details触发器。对表执行插入操作后,将触发此触发器。

mysql> DELIMITER //  
mysql> Create Trigger after_insert_details  
AFTER INSERT ON student_info FOR EACH ROW  
BEGIN  
INSERT INTO student_detail VALUES (new.stud_id, new.stud_code,   
new.stud_name, new.subject, new.marks, new.phone, CURTIME());  
END //  

如果触发器创建成功,我们将得到如下输出:

三、如何调用 AFTER INSERT 触发器?

我们可以使用以下语句来调用上面创建的触发器:

mysql> INSERT INTO student_info VALUES   
(10, 110, 'Alexandar', 'Biology', 67, '2347346438');  

更新查询执行后修改的表是student_detail。我们可以使用 SELECT 语句来验证它,如下所示:

mysql> SELECT * FROM student_detail; 

在这个输出中,我们可以看到在向 student_info 表中插入值时,student_detail 表将通过调用触发器自动填充记录。

四、如何在 MySQL Workbench中创建 AFTER INSERT 触发器?

要使用此工具创建插入后触发器,我们首先需要启动MySQL Workbench并使用我们之前创建的用户名和密码登录。我们将得到如下画面:

现在执行以下步骤来创建 AFTER INSERT 触发器:

1. 转到 Navigation 选项卡并单击包含 MySQL 服务器中所有可用数据库的Schema 菜单。

2. 选择数据库(例如 mystudentdb),双击它会显示包含表、视图、函数和存储过程的子菜单。请参阅下面的屏幕。

3. 展开表子菜单并选择要在其上创建触发器的表。选择表后,右键单击所选表(例如mystudentdb),然后单击 Alter Table 选项。见下图:

4. 点击Alter Table选项,屏幕如下:

5. 现在,单击上一节红色矩形框中显示的Trigger 选项卡,然后选择 Timing/Event AFTER INSERT。我们会注意到有一个(+) 图标按钮来添加触发器。单击该按钮,我们将根据选择时间/事件在触发器上获得默认代码:

6. 现在,完成触发器代码,再次检查它们,如果没有发现错误,单击应用按钮。

7.点击Apply按钮后,点击Finish按钮完成。

8.如果我们查看Schema菜单,我们可以看到student_info表下的AFTER_INSERT_detail触发器如下:

热门文章

优秀文章