You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MySQL中创建触发器,实现插入员工数据时记录审计信息?

实现Employees表插入操作的审计触发器

第一步:创建审计表Employees_audit

首先需要创建用于记录审计信息的表,结构如下:

CREATE TABLE Employees_audit (
    AuditID INT IDENTITY(1,1) PRIMARY KEY, -- 自增主键,唯一标识每条审计记录
    AuditMessage VARCHAR(100) NOT NULL,
    InsertedTime DATETIME NOT NULL
);
  • AuditID:作为唯一标识,避免审计记录重复
  • AuditMessage:存储指定的提示文本
  • InsertedTime:记录插入操作发生的时间

第二步:创建INSERT触发器

根据你使用的数据库类型,选择对应的触发器代码:

SQL Server 版本

CREATE TRIGGER trg_Employees_Insert_Audit
ON Employees
AFTER INSERT
AS
BEGIN
    SET NOCOUNT ON; -- 避免返回影响行数的额外消息
    INSERT INTO Employees_audit (AuditMessage, InsertedTime)
    VALUES ('A new row is inserted', GETDATE());
END;

MySQL 版本

DELIMITER //
CREATE TRIGGER trg_Employees_Insert_Audit
AFTER INSERT ON Employees
FOR EACH ROW
BEGIN
    INSERT INTO Employees_audit (AuditMessage, InsertedTime)
    VALUES ('A new row is inserted', NOW());
END //
DELIMITER ;

Oracle 版本

CREATE OR REPLACE TRIGGER trg_Employees_Insert_Audit
AFTER INSERT ON Employees
FOR EACH ROW
BEGIN
    INSERT INTO Employees_audit (AuditMessage, InsertedTime)
    VALUES ('A new row is inserted', SYSDATE);
END;
/

关键说明

  • AFTER INSERT:指定触发器在插入操作完成后执行
  • 不同数据库获取当前时间的函数不同:SQL Server用GETDATE(),MySQL用NOW(),Oracle用SYSDATE
  • SET NOCOUNT ON(仅SQL Server):防止触发器执行时返回额外的行数统计信息,避免干扰应用程序逻辑

内容的提问来源于stack exchange,提问作者Daryl Fox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 06:10:59