MySql教程
MySql用户管理
MySQL数据库
MySql表格和视图
MySQL查询
MySQL索引
MySQL子句
MySQL授权
MySql控制流
MySQL条件
MySQL连接
MySQL键
MySQL触发器
MySQL聚合函数
MySQL常用
MySQL正则表达式
MySql差异性

MySQL BEFORE INSERT触发器

在每次执行插入操作时,都会自动调用MySQL中的插入触发器。在本文中,我们将学习如何使用其语法和示例创建插入前触发器。

语法

以下是创建在INSERT 在MySQL中触发之前:
CREATE TRIGGER trigger_name 
BEFORE INSERT
ON table_name for EACH ROW
Trigger_body ;
可以在下面解释BEFORE INSERT触发器语法参数:
首先,我们将指定要创建的触发器的名称。它在架构中应该是唯一的。 第二,我们将指定触发动作时间,该时间应为INSERT之前。在表上进行每一行修改之前,将调用此触发器。 第三,我们将指定与触发器关联的表的名称。它必须写在ON关键字之后。如果不指定表名,则触发器将不存在。 最后,我们将指定触发触发器时要执行的语句。
如果要执行多个语句,我们将使用 BEGIN END 块,该块包含一组查询来定义触发器的逻辑。请参见以下语法:
DELIMITER $ 
CREATE TRIGGER trigger_name BEFORE INSERT
ON table_name for EACH ROW
BEGIN
   variable declarations
   trigger code
END$
DELIMITER ;

限制

我们只能在INSERT触发器之前访问和更改 NEW 值。 我们无法访问 OLD 。如果尝试访问OLD值,则会收到错误消息,因为OLD值不存在。 我们无法在 VIEW 上创建INSERT触发器。

插入前触发器示例

让我们了解如何使用 CREATE TRIGGER语句创建插入前触发器和 MySQL 中的示例。
假设我们创建了一个名为 员工如下:
CREATE TABLE employee(
    name varchar(45) NOT null,  
    occupation varchar(35) NOT null,  
    working_date date,
    working_hours varchar(10)
);
接下来,我们将一些记录插入到employee表中,然后执行 SELECT语句以查看表数据如下:
MySQL在插入触发器之前
接下来,我们将使用 CREATE TRIGGER 语句以创建BEFORE INSERT触发器。如果有人尝试插入 occupation ='Scientist',此触发器将自动插入,并插入 occupation ='Leader'
mysql> DELIMITER //
mysql> Create Trigger before_insert_occupation
BEFORE INSERT ON employee for EACH ROW
BEGIN
if NEW.occupation = 'Scientist' THEN SET NEW.occupation = 'Doctor';
END IF;
END //
如果成功创建触发器,我们将获得如下输出:
MySQL之前INSERT TRIGGER

如何调用INSERT触发器之前?

我们可以使用以下语句来调用上面创建的触发器:
mysql> INSERT INTO employee VALUES  
('Markus', 'Scientist', '2020-10-08', 14);
mysql> INSERT INTO employee VALUES  
('Alexander', 'Actor', '2020-10-012', 13);
执行上面的语句后,我们将得到如下输出:
MySQL之前INSERT TRIGGER
执行SELECT语句以验证输出:
MySQL在插入触发器之前
在此输出中,我们可以看到,在将职业列值插入为"科学家"时,该表将通过调用触发器自动填充"医生"值。

如何在MySQL工作台中创建插入前触发器?

要使用此工具创建插入前触发器,我们首先需要启动 MySQL Workbench ,然后使用我们之前创建的用户名和密码登录。我们将显示如下屏幕:
MySQL在插入触发器之前
现在请执行以下操作创建INSERT触发器之前的步骤:
1、转到导航选项卡,然后单击 架构菜单,其中包含MySQL服务器中所有可用的数据库。
2、选择数据库(例如, mysqltestdb ),双击它。它将显示 子菜单,其中包含表,视图,函数和存储过程。参见下面的屏幕。
MySQL在插入触发器之前
3、展开 表格子菜单,然后选择要在其上创建触发器的表格。选择表格后,右键单击所选表格(例如 employee ),然后单击 Alter Table 选项。参见下图:
MySQL在插入触发器之前
4、单击"更改表"选项将显示以下屏幕:
MySQL在插入触发器之前
5、现在,单击上一节的红色矩形框中显示的 Trigger选项卡,然后在插入之前选择Timing/Event。我们将注意到,有一个(+)图标按钮可添加触发器。单击该按钮,我们将基于选择时间/事件在触发器上获得默认代码:
MySQL在插入触发之前
6、现在,完成触发代码,再次检查它们,没有发现错误,单击 应用按钮
MySQL在插入触发器之前
7、单击"应用"按钮后,单击 完成按钮以完成操作。
 MySQL在插入触发器之前
8、如果进入模式菜单,我们将在employee表下看到 employee_BEFORE_INSERT 触发器,如下所示:
MySQL在插入触发器之前
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4