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);