MySQL触发器和存储过程


前言

在 MySQL 中,触发器(Trigger)和存储过程(Stored Procedure)都是重要的数据库编程工具,它们都用于执行自动化的数据库操作,但它们的用途和触发时机有所不同


一、触发器(Trigger)

1.介绍

MySQL 触发器(Trigger)是一种特殊的存储过程,它在对某个表执行 INSERT、UPDATE 或 DELETE 操作时自动触发并执行。触发器的作用通常是用于数据的验证、审计、日志记录、或自动更新等

2.语法及参数解释

CREATE TRIGGER trigger_name
{ BEFORE | AFTER }
{ INSERT | UPDATE | DELETE }
ON table_name
FOR EACH ROW
trigger_body;
  1. trigger_name:触发器的名称
  2. BEFORE 或 AFTER:定义触发器执行的时机,BEFORE 表示在触发的 SQL 语句执行之前,AFTER 表示在触发的 SQL 语句执行之后
  3. INSERT、UPDATE、DELETE:定义触发器响应的事件类型
  4. table_name:触发器关联的表
  5. FOR EACH ROW:指示触发器针对每一行进行操作
  6. trigger_body:触发器执行的实际 SQL 语句,类似于存储过程的代码

3.触发器示例

1.先创建员工信息employees 表,日志记录audit_log表

CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    salary DECIMAL(10, 2)
);
CREATE TABLE audit_log (
    id INT AUTO_INCREMENT PRIMARY KEY,
    action VARCHAR(50),
    table_name VARCHAR(50),
    record_id INT,
    timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

2.创建insert触发器

CREATE TRIGGER after_employee_insert # 触发器的名称
AFTER INSERT ON employees # 当 employees 表插入新记录时触发此触发器
FOR EACH ROW # 对每一行进行操作
BEGIN
# SQL 语句
    INSERT INTO audit_log (action, table_name, record_id)
    VALUES ('INSERT', 'employees', NEW.id); # NEW.id 表示插入的数据行的 id 值
END;

3.在employees 表写入一条数据

INSERT INTO employees(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值