实现 MySQL 触发器表的步骤
为了帮助小白理解如何实现 MySQL 触发器表,我将按照以下步骤来详细说明:
- 创建数据库和表格
- 创建触发器
- 测试触发器
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.salary
,NEW
关键字表示正在插入的新记录。
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
:关键字,表示正在插入的新记录。