Mysql 简明教程

MySQL - Before Insert Trigger

正如我们已经了解过的, Trigger 被定义为对执行的事件的响应。在 MySQL 中,触发器被称为特殊存储过程,因为它不需要像其他存储过程那样显式调用。发生所需事件时,触发器会自动起作用。这些事件包括执行 SQL 语句,如 INSERT、UPDATE 和 DELETE 等。

MySQL Before Insert Trigger

Before Insert 触发器是 MySQL 数据库支持的行级触发器。顾名思义,此触发器在值被插入数据库表之前立即执行。

每当在数据库中查询 INSERT 语句时,此触发器都会自动首先执行,然后才将值插入表中。

Syntax

这是在 MySQL 中创建 BEFORE INSERT 触发器的语法 −

CREATE TRIGGER trigger_name
BEFORE INSERT ON table_name FOR EACH ROW
BEGIN
   -- trigger body
END;

Example

让我们看一个演示 BEFORE INSERT 触发器示例。在此,我们正在使用以下查询创建包含机构内学生详细信息的新表 STUDENT −

CREATE TABLE STUDENT(
   Name varchar(35),
   Age INT,
   Score INT,
   Grade CHAR(10)
);

使用以下 CREATE TRIGGER 语句,在 STUDENT 表上创建一个新触发器 sample_trigger 。在这里,我们检查每个学生的成绩并为他们分配合适的等级。

DELIMITER //
CREATE TRIGGER sample_trigger
BEFORE INSERT ON STUDENT FOR EACH ROW
BEGIN
IF NEW.Score < 35 THEN SET NEW.Grade = 'FAIL';
ELSE SET NEW.Grade = 'PASS';
END IF;
END //
DELIMITER ;

使用如下所示的常规 INSERT 语句,将值插入 STUDENT 表 −

INSERT INTO STUDENT VALUES
('John', 21, 76, NULL),
('Jane', 20, 24, NULL),
('Rob', 21, 57, NULL),
('Albert', 19, 87, NULL);

Verification

要验证触发器是否已执行,请使用 SELECT 语句显示 STUDENT 表 −

Before Insert Trigger Using a Client Program

除了创建或显示触发器,我们还可以使用客户端程序执行“Before Insert 触发器”语句。

Syntax

Example

以下是这些程序 −