MySQL AFTER UPDATE触发器
每当与触发器关联的表上触发UPDATE事件时,都会自动调用MySQL中的AFTER UPDATE触发器。在本文中,我们将学习如何使用其语法和示例创建AFTER UPDATE触发器。
语法
以下是用于创建AFTER UPDATE触发器的语法
更新后在MySQL中触发:
CREATE TRIGGER trigger_name
AFTER UPDATE
ON table_name for EACH ROW
trigger_body ;
我们可以如下解释AFTER UPDATE触发器语法的参数:
第一,我们将指定要创建的触发名称。它在架构中应该是唯一的。
第二,我们将指定触发动作时间,该时间应为"更新后"。在表的每一行更改发生后,将触发此触发器。
第三,我们将指定与触发器关联的表名。它必须写在 ON 之后。如果未指定表名,则触发器将不存在。
最后,我们将指定触发主体,其中包含在触发触发器时执行的语句。
如果要执行多个语句,我们将使用
BEGIN END 块,该块包含一组SQL查询来定义触发。请参见以下语法:
DELIMITER $
CREATE TRIGGER trigger_name AFTER UPDATE
ON table_name for EACH ROW
BEGIN
variable declarations
trigger code
END$
DELIMITER ;
限制
我们可以访问OLD行,但是无法更新它们。
我们可以访问NEW行,但不能更新它们。
我们无法在 VIEW 上创建AFTER UPDATE触发器。
AFTER UPDATE触发器示例
让我们了解如何使用 CREATE TRIGGER语句创建AFTER UPDATE触发器
假设我们已经创建了一个名为
students 的表来存储学生的信息,如下所示:
mysql> CREATE TABLE students(
id int NOT null AUTO_INCREMENT,
name varchar(45) NOT null,
class int NOT null,
email_id varchar(65) NOT null,
PRIMARY KEY (id)
);
接下来,我们将使用以下语句在此表中插入一些记录:
INSERT INTO students (name, class, email_id)
VALUES ('Stephen', 6, 'stephen@lidihuo.com'),
('Bob', 7, 'bob@lidihuo.com'),
('Steven', 8, 'steven@lidihuo.com'),
('Alexandar', 7, 'alexandar@lidihuo.com');
执行
SELECT 查询以查看表数据。
第三,我们将创建另一个名为
students_log 的表将更新的信息保留在所选用户中。
mysql> CREATE TABLE students_log(
user varchar(45) NOT null,
descreptions varchar(65) NOT null
);
然后,我们将创建一个AFTER UPDATE
触发器,以促进下一班的所有学生,即6将是7,7将是8,依此类推。每当对"
students"表中的单行执行更新时,都会在
" students_log "表中插入新行。该表保留有关当前更新的
当前用户ID 和
描述。请参阅下面的触发代码。
DELIMITER $
CREATE TRIGGER after_update_studentsInfo
AFTER UPDATE
ON students for EACH ROW
BEGIN
INSERT into students_log VALUES (user(),
CONCAT('Update Student Record ', OLD.name, ' Previous class :',
OLD.class, ' Present class ', NEW.class));
END $
DELIMITER ;
在此触发器中,我们首先指定了触发器名称
after_update_studentsInfo 。然后,指定触发事件。第三,我们指定了与触发器关联的表名。最后,我们在触发器主体内部编写了触发器逻辑,该触发器主体在" students"表中执行更新并将日志信息保留在" students_log"表中。
如何调用AFTER UPDATE触发器?
首先,我们将使用以下调用上面创建的触发器的语句来更新"学生"表:
mysql> UPDATE students SET class = class + 1;
接下来,我们将查询
students和
students_log表中的数据。我们可以看到查询执行后表已经更新。参见以下输出:
同样,我们将从以下位置查询数据保留当前用户ID和有关当前更新的说明的students_log表。参见以下输出:
如何要在MySQL工作台中创建AFTER UPDATE触发器?
要在工作台中创建AFTER UPDATE触发器,我们首先
启动 MySQL Workbench ,然后使用用户名和密码登录。我们将获得如下所示的UI:
现在请执行以下操作创建AFTER UPDATE触发器的步骤:
1、转到
导航标签,然后单击
Schema 菜单。它将显示 MySQL 数据库服务器中所有可用的数据库。
2、选择数据库(例如,
mystudentdb )。然后,双击所选的架构。它显示
子菜单,其中包含表,视图,函数和存储过程。参见下面的屏幕。
3、展开
表格子菜单,然后选择要在其上创建触发器的表格。然后,右键单击所选表格(例如,
,学生),然后单击
更改表格选项。参见下图:
4、单击
Alter Table 选项,将显示以下屏幕:
5、现在,单击上一节的
红色矩形框中显示的
Trigger 标签,然后选择
定时/事件更新后。我们将注意到,有一个
(+)图标按钮可添加触发器。单击该按钮,我们将基于选择时间/事件在触发器上获得默认代码:
6、现在,完成触发代码,再次检查它们,如果没有发现错误,请单击
应用按钮。
7、单击"应用"按钮后,单击
完成按钮以完成该过程。
8、如果查看架构菜单,则可以在"
学生" 表下看到
student_update_trigger ,如下所示: