MySQL - 插入后触发

MySQL - 插入后触发 首页 / MySQL入门教程 / MySQL - 插入后触发

在表中发生插入事件时,在MySQL中插入触发器之后,将自动调用它。在本文中,无涯教程将学习如何使用其语法和示例创建插入后触发器。

语法

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

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

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

  • 首先,将指定要创建的触发器的名称(trigger_name)。它在架构中应该是唯一的。
  • 第二,将指定触发动作时间(AFTER INSERT),该时间应为AFTER INSERT子句以调用触发器。
  • 第三,将指定与触发器关联的表的名称(table_name)。它必须写在ON关键字之后。如果不指定表名,则触发器将不存在。
  • 最后,无涯教程将指定触发主体(trigger_body),其中包含一个或多个在激活触发器时执行的语句。

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

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

限制条件

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

插入后触发示例

让无涯教程了解如何使用 CREATE TRIGGER 语句创建AFTER INSERT触发器带有示例的MySQL 。

假设创建了一个名为" 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 Trigger

同样,无涯教程将创建一个名为" 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 Trigger

如何调用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 Trigger

在此输出中,无涯教程可以看到,在将值插入到student_info表中时,student_detail表将通过调用触发器自动填充记录。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

如何做好一场技术演讲 -〔极客时间〕

图解 Google V8 -〔李兵〕

微信小程序全栈开发实战 -〔李艺〕

爆款文案修炼手册 -〔乐剑峰〕

陈天 · Rust 编程第一课 -〔陈天〕

零基础实战机器学习 -〔黄佳〕

Spring Cloud 微服务项目实战 -〔姚秋辰(姚半仙)〕

技术领导力实战笔记 2022 -〔TGO 鲲鹏会〕

AI绘画核心技术与实战 -〔南柯〕

好记忆不如烂笔头。留下您的足迹吧 :)