实现 MySQL 触发器表的步骤

为了帮助小白理解如何实现 MySQL 触发器表,我将按照以下步骤来详细说明:

  1. 创建数据库和表格
  2. 创建触发器
  3. 测试触发器

1. 创建数据库和表格

首先,我们需要创建一个数据库和一个表格来存储数据。假设我们要创建一个名为company的数据库,并在其中创建一个名为employee的表格,表格包含以下字段:

  • id:员工ID,INT类型,主键
  • name:员工姓名,VARCHAR类型
  • age:员工年龄,INT类型
  • salary:员工薪水,FLOAT类型
CREATE DATABASE company; -- 创建数据库

USE company; -- 使用数据库

CREATE TABLE employee (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  age INT,
  salary FLOAT
);

2. 创建触发器

接下来,我们将创建一个触发器,当向employee表格插入新的记录时,自动计算并更新员工的薪水。这里我们使用BEFORE INSERT触发器类型,即在插入数据之前执行触发器的动作。

CREATE TRIGGER calculate_salary BEFORE INSERT ON employee
FOR EACH ROW
BEGIN
  DECLARE new_salary FLOAT;

  -- 计算新员工薪水
  SET new_salary = CASE
    WHEN NEW.age < 25 THEN 2000
    WHEN NEW.age >= 25 AND NEW.age < 40 THEN 3000
    ELSE 4000
  END;

  -- 更新员工薪水
  SET NEW.salary = new_salary;
END;

以上代码中,我们使用了DECLARE语句来声明一个局部变量new_salary,它用于存储计算后的新员工薪水。然后,在触发器的动作中,我们使用SET语句将计算后的薪水赋值给NEW.salaryNEW关键字表示正在插入的新记录。

3. 测试触发器

现在,我们可以测试触发器是否正常工作。插入一些数据到employee表格中,然后观察薪水字段是否根据年龄自动更新。

INSERT INTO employee (id, name, age) VALUES (1, 'John', 22);
INSERT INTO employee (id, name, age) VALUES (2, 'Jane', 30);
INSERT INTO employee (id, name, age) VALUES (3, 'Bob', 45);

查询employee表格,验证薪水是否正确更新。

SELECT * FROM employee;

结果应该是:

+----+------+-----+---------+
| id | name | age | salary  |
+----+------+-----+---------+
|  1 | John |  22 |  2000.0 |
|  2 | Jane |  30 |  3000.0 |
|  3 | Bob  |  45 |  4000.0 |
+----+------+-----+---------+

至此,我们成功创建并测试了 MySQL 触发器表的实现。

数据库关系图

下面是一个使用 mermaid 语法绘制的数据库关系图:

erDiagram
    employee ||--o{ company : belongs to

引用形式的描述信息

在上述步骤中,我们使用了以下引用形式的描述信息:

  • BEFORE INSERT:触发器类型,表示在插入数据之前执行触发器的动作。
  • FOR EACH ROW:触发器适用范围,表示每一行数据都会触发触发器的执行。
  • DECLARE:用于声明一个局部变量。
  • SET:用于设置变量或字段的值。
  • NEW:关键字,表示正在插入的新记录。