MySQL 触发器实战:产品管理系统操作记录跟踪

本文以产品管理系统为例,演示如何使用 MySQL 触发器跟踪产品表操作记录。通过创建 BEFORE INSERTAFTER UPDATEAFTER DELETE 触发器,自动记录产品新增、修改和删除操作。

数据库表结构

  • Product 表

| 字段名 | 字段描述 | 数据类型 | 主键 | 外键 | 非空 | 唯一 | 自增 | |---|---|---|---|---|---|---|---| | Id | 产品编号 | Int(10) | 是 | 否 | 是 | 是 | 否 | | Name | 产品名称 | Varchar(20) | 否 | 否 | 是 | 否 | 否 | | Function | 主要功能 | Varchar(50) | 否 | 否 | 否 | 否 | 否 | | Company | 生产厂家 | Varchar(20) | 否 | 否 | 是 | 否 | 否 | | Address | 住址 | Varchar(20) | 否 | 否 | 否 | 否 | 否 |

  • Operate 表

| 字段名 | 字段描述 | 数据类型 | 主键 | 外键 | 非空 | 唯一 | 自增 | |---|---|---|---|---|---|---|---| | Op_id | 产品编号 | Int(10) | 否 | 否 | 是 | 否 | 否 | | Op_type | 操作方式 | Varchar(20) | 否 | 否 | 是 | 否 | 否 | | Op_time | 操作时间 | Time | 否 | 否 | 是 | 否 | 否 |

实现步骤

  1. 创建 product 表和 operate 表
CREATE TABLE Product (
    Id INT(10) PRIMARY KEY,
    Name VARCHAR(20) NOT NULL UNIQUE,
    Function VARCHAR(50),
    Company VARCHAR(20) NOT NULL,
    Address VARCHAR(20)
);

CREATE TABLE Operate (
    Op_id INT(10),
    Op_type VARCHAR(20) NOT NULL,
    Op_time TIME NOT NULL,
    FOREIGN KEY (Op_id) REFERENCES Product(Id)
);
  1. 创建 product_bf_insert 触发器
CREATE TRIGGER product_bf_insert
BEFORE INSERT ON Product
FOR EACH ROW
BEGIN
    INSERT INTO Operate (Op_id, Op_type, Op_time) VALUES (NEW.Id, 'INSERT', NOW());
END;
  1. 创建 product_af_update 触发器
CREATE TRIGGER product_af_update
AFTER UPDATE ON Product
FOR EACH ROW
BEGIN
    INSERT INTO Operate (Op_id, Op_type, Op_time) VALUES (NEW.Id, 'UPDATE', NOW());
END;
  1. 创建 product_af_del 触发器
CREATE TRIGGER product_af_del
AFTER DELETE ON Product
FOR EACH ROW
BEGIN
    INSERT INTO Operate (Op_id, Op_type, Op_time) VALUES (OLD.Id, 'DELETE', NOW());
END;
  1. 对 product 表进行操作
-- 插入产品
INSERT INTO Product (Id, Name, Function, Company, Address)
VALUES (1, 'Product A', 'Function A', 'Company A', 'Address A');

-- 更新产品
UPDATE Product
SET Name = 'Product A Updated'
WHERE Id = 1;

-- 删除产品
DELETE FROM Product WHERE Id = 1;

**注意:**触发器会在执行相应的操作语句时自动触发,不需要手动执行触发器。

总结

本文演示了如何使用 MySQL 触发器自动记录产品操作,方便进行审计、跟踪和数据恢复。通过这种方式,可以更好地管理产品数据,提高系统安全性。

延伸阅读

MySQL 触发器实战:产品管理系统操作记录跟踪

原文地址: https://www.cveoy.top/t/topic/qFBO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录