存储过程 事务 handler

 

事务与存储过程以及两者的区别 - 言卿· - 博客园

https://www.cnblogs.com/cds98/p/8990539.html

SQL知识点五——存储过程和事务(超详细)_存储过程事务控制-CSD…

https://blog.csdn.net/qq_62859013/article/details/143313254

mysql储存过程与事务处理_mob64ca12d9b014的技术博客_51CTO博客

https://blog.51cto.com/u_16213338/12575341

存储过程和事务是数据库管理系统中的两个重要概念,分别用于提高操作效率和保证数据一致性。

存储过程

存储过程是一组预编译的SQL语句,存储在数据库中,用户可以通过调用存储过程来执行这些语句。它的主要特点包括:

  • 减少网络开销:存储过程在服务器端执行,避免了频繁的客户端与服务器之间的通信。

  • 提高执行效率:存储过程在创建时被编译,后续调用无需再次编译。

  • 增强安全性:通过封装复杂逻辑,减少SQL注入的风险。

创建存储过程

以下是创建存储过程的基本语法:

CREATE PROCEDURE procedure_name (parameters)
BEGIN
-- SQL语句
END;

示例:创建一个插入用户记录的存储过程:

DELIMITER //
CREATE PROCEDURE InsertUser(IN userName VARCHAR(100), IN userEmail VARCHAR(100))
BEGIN
INSERT INTO users (name, email) VALUES (userName, userEmail);
END //
DELIMITER ;

调用存储过程

使用 CALL 语句调用存储过程:

CALL InsertUser('张三''zhangsan@example.com');

事务

事务是一组逻辑上的操作单元,这些操作要么全部成功,要么全部失败。事务的核心是保证数据的一致性,其主要特性为ACID:

  • 原子性:事务中的所有操作要么全部执行,要么全部回滚。

  • 一致性:事务执行后,数据库从一个一致性状态转变为另一个一致性状态。

  • 隔离性:并发事务之间互不干扰。

  • 持久性:事务提交后,其结果永久保存。

事务操作

在MySQL中,事务的基本操作包括:

START TRANSACTION-- 开始事务
-- SQL操作
COMMIT-- 提交事务
ROLLBACK-- 回滚事务

示例:转账事务

以下示例展示了如何使用事务实现用户A向用户B转账:

START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE user_id = 'A';
UPDATE accounts SET balance = balance + 100 WHERE user_id = 'B';
COMMIT;

如果在执行过程中发生错误,可以使用 ROLLBACK 回滚事务:

ROLLBACK;

存储过程与事务结合

存储过程可以与事务结合使用,以实现复杂的业务逻辑。例如,以下存储过程实现了转账操作,并在发生错误时回滚事务:

DELIMITER //
CREATE PROCEDURE TransferFunds()
BEGIN
DECLARE err INT DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET err = 1;

START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE user_id = 'A';
UPDATE accounts SET balance = balance + 100 WHERE user_id = 'B';

IF err > 0 THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
END //
DELIMITER ;

调用存储过程:

CALL TransferFunds();

存储过程和事务的结合不仅提高了代码的可维护性,还增强了数据操作的可靠性和一致性。

了解详细信息:
 
 
posted @ 2026-06-16 00:36  涂山树下  阅读(6)  评论(1)    收藏  举报