MySQL在特定列更新后激活触发器

MySQL在特定列更新后激活触发器

MySQL触发器是一种在MySQL数据库中自动执行的程序。当满足特定的条件时,触发器将自动激活。本文将重点介绍在MySQL中如何在特定列更新后激活触发器。

阅读更多:MySQL 教程

创建表和触发器

首先,让我们创建一个名为“users”的表,该表包含三列:id,name和email。

CREATE TABLE users (
  id INT(11) NOT NULL AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  email VARCHAR(100) NOT NULL,
  PRIMARY KEY (id)
);
SQL

接下来,我们将创建一个名为“users_au”的触发器,在name列被更新时自动激活。该触发器将name列的旧值插入“users_audit”表中:

CREATE TABLE users_audit (
  id INT(11) NOT NULL AUTO_INCREMENT,
  user_id INT(11) NOT NULL,
  column_name VARCHAR(50) NOT NULL,
  old_value VARCHAR(100),
  new_value VARCHAR(100),
  changed_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id)
);

DELIMITER CREATE TRIGGER users_au
  AFTER UPDATE ON users
  FOR EACH ROW
BEGIN
  IF NEW.name != OLD.name THEN
    INSERT INTO users_audit (user_id, column_name, old_value, new_value)
    VALUES (OLD.id, 'name', OLD.name, NEW.name);
  END IF;
END

DELIMITER ;
SQL

测试

现在,我们将测试这个触发器,向“users”表中插入一行数据,并将“name”列更新为新值:

INSERT INTO users (name, email) VALUES ('John', 'john@example.com');

UPDATE users SET name = 'Tom' WHERE id = 1;
SQL

如果您现在查询“users_audit”表,将看到该表中有一行记录,其中包含“John”作为旧值,“Tom”作为新值以及其他有用的信息。

总结

在MySQL中,可以创建一个触发器来在特定列更新后自动激活。使用触发器可以轻松跟踪数据库中发生的更改,并在需要时自动记录历史记录。创建触发器的基本语法非常简单,并可以根据需要灵活控制插入的数据。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册