Mysql 简明教程

MySQL - After Update Trigger

Trigger 只是对一个事件的响应的定义。在 MySQL 中,触发器是一个特殊存储过程,驻留在系统目录中,并且在事件执行时执行。它被称为特殊存储过程,因为它不需要像其他存储过程那样显式调用。触发器在所需事件触发时自动执行。

MySQL After Update Trigger

After Update Trigger 是 MySQL 数据库支持的行级触发器。顾名思义,After Update Trigger 在数据库表的一行中的值更新后立即执行。

一旦在 MySQL 中定义了 After Update 触发器,每当在数据库中执行 UPDATE 语句时,表的值都会先更新,然后执行触发器设置。

Syntax

以下是在 MySQL 中创建 AFTER UPDATE 触发器的语法:

CREATE TRIGGER trigger_name
AFTER UPDATE ON table_name FOR EACH ROW
BEGIN
   -- trigger body
END;

Example

让我们首先创建一个名为 USERS 的表,其中包含应用程序用户的详细信息。为此,请使用以下 CREATE TABLE 查询:

CREATE TABLE USERS(
   ID INT AUTO_INCREMENT,
   NAME VARCHAR(100) NOT NULL,
   AGE INT NOT NULL,
   BIRTHDATE VARCHAR(100),
   PRIMARY KEY(ID)
);

使用如下所示的常规 INSERT 语句将值插入到 USERS 表中:

INSERT INTO USERS (NAME, AGE, BIRTHDATE) VALUES
('Sasha', 23, '24/06/1999');
('Alex', 21, '12/01/2001');

USERS 表被创建如下:

Creating the trigger:

使用以下 CREATE TRIGGER 语句,在 USERS 表上创建一个新触发器 after_update_trigger 以使用 SQLSTATE 显示以下自定义错误 -

DELIMITER //
CREATE TRIGGER after_update_trigger AFTER UPDATE ON USERS FOR EACH ROW
BEGIN
IF NEW.AGE < 0
THEN SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Age Cannot be Negative';
END IF;
END //
DELIMITER ;

使用常规 UPDATE 语句(如下所示)更新 SAMPLE 表的值 -

UPDATE SAMPLE SET AGE = -1 WHERE NAME = 'Sasha';

Output

该查询的输出显示为错误 -

ERROR 1644 (45000): Age Cannot be Negative

After Update Trigger Using a Client Program

我们还可以使用客户端程序执行 MySQL 数据库中的 After Update 触发器,而不是直接查询 SQL 语句。

Syntax

Example

以下是这些程序 −