MySQL AFTER INSERT触发器

MySQL AFTER INSERT触发器

在MySQL中,每当在表上发生插入事件时,将自动调用After Insert触发器。在本文中,我们将学习如何使用语法和示例创建After Insert触发器。

语法

以下是在MySQL中创建After Insert触发器的语法:

CREATE TRIGGER trigger_name 
AFTER INSERT
ON table_name FOR EACH ROW
trigger_body ;
  • 首先,我们将指定要创建的触发器的名称。它在模式内必须是唯一的。
  • 其次,我们将指定触发器的触发动作时间,应该是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 ;

约束

  • 我们可以访问 NEW 的值,但无法在AFTER INSERT触发器中更改它们。
  • 如果尝试访问 OLD 的值,将会出错,因为在INSERT触发器上没有OLD。
  • 无法在 VIEW 上创建AFTER INSERT触发器。

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 语句 以查看表中的数据,如下所示:

MySQL AFTER INSERT触发器

再一次,我们将按照以下方式创建一个名为 “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 //

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

MySQL AFTER INSERT触发器

如何调用插入后触发器?

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

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

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

mysql> SELECT * FROM student_detail;

MySQL AFTER INSERT触发器

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

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

要使用这个工具创建一个在插入后触发的触发器,我们首先需要启动MySQL Workbench并使用之前创建的用户名和密码登录。我们会看到以下屏幕:

MySQL AFTER INSERT触发器

现在按照以下步骤创建一个触发器:

1. 转到导航选项卡,点击包含MySQL服务器中所有可用数据库的 模式菜单

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

MySQL AFTER INSERT触发器

3. 展开 表子菜单 并选择要创建触发器的表。在选择一个表后,右击所选表(例如,mytsudentdb)然后点击Alter Table选项。请参阅下方图像:

MySQL AFTER INSERT触发器

4. 单击 Alter Table 选项,将显示如下屏幕:

MySQL AFTER INSERT触发器

5. 现在,点击前面一节的红色矩形框中显示的 触发器选项卡 ,然后选择 插入后的时机/事件 。我们会注意到有一个 (+)图标 按钮可以添加触发器。点击该按钮,我们将得到一个基于所选择的时机/事件的默认触发器代码:

MySQL AFTER INSERT触发器

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

MySQL AFTER INSERT触发器

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

MySQL AFTER INSERT触发器

8. 如果我们查看模式菜单,我们可以看到以下内容: AFTER_INSERT_detail 触发器位于 student_info 表下方:

MySQL AFTER INSERT触发器

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程