MySQL AFTER UPDATE触发器


AFTER UPDATE触发器就是MySQL将在执行UPDATE操作后才触发该触发器。

语法

在MySQL中创建AFTER UPDATE触发器的语法为:

1
2
3
4
5
6
7
8
9
10
11
CREATE TRIGGER trigger_name
AFTER UPDATE
ON table_name FOR EACH ROW
BEGIN
-- variable declarations
-- trigger code
END;

参数|说明
trigger_name | 要创建的触发器的名称。
AFTER UPDATE | 指明触发器将在执行UPDATE操作后触发。
table_name | 要创建触发器的表的名称。

注意
您不能在视图上创建 AFTER 触发器。
有两个变量NEW和OLD分别代表执行触发器前后的记录。
NEW 的值可以被更新,OLD的值不能被更新
比如想执行触发器后,新值都加5 ,可以这样写NEW.value = OLD.value

MySQL AFTER UPDATE触发器示例

下面的示例演示了在MySQL中如何使用CREATE TRIGGER语句创建AFTER UPDATE触发器。

  1. 创建表
1
2
3
4
5
6
7
8
9
CREATE TABLE contacts
( contact_id INT(11) NOT NULL AUTO_INCREMENT,
last_name VARCHAR(30) NOT NULL,
first_name VARCHAR(25),
birthday DATE,
created_date DATE,
created_by VARCHAR(30),
CONSTRAINT contacts_pk PRIMARY KEY (contact_id)
);
  1. 创建AFTER UPDATE触发器:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
DELIMITER //
CREATE TRIGGER contacts_after_update
AFTER UPDATE
ON contacts FOR EACH ROW
BEGIN
DECLARE vUser varchar(50);
-- 查找执行了insert操作的用户名,放到变量vUser中
SELECT USER() INTO vUser;
-- 将update操作记录放到审计表中
INSERT INTO contacts_audit
( contact_id,
updated_date,
updated_by)
VALUES
( NEW.contact_id,
SYSDATE(),
vUser );
END; //
DELIMITER ;


原文链接:https://codingdict.com/