事务(Transaction)是一系列数据库操作的执行单元,这些操作要么全部成功地执行,要么全部回滚(撤销),从而确保数据库的数据一致性和完整性。

  1. 原子性(Atomicity):事务被视为一个不可分割的原子操作单元,要么全部执行成功,要么全部失败回滚。如果事务中的任何操作失败,那么所有的操作都会被撤销,数据库状态将回滚到事务开始前的状态。

  2. 一致性(Consistency):事务的执行将数据库从一个合法状态转换为另一个合法状态。这意味着在事务执行前和执行后,数据库必须满足所有预定义的规则和约束。

  3. 隔离性(Isolation):事务的执行是相互隔离的,一个事务的操作不会被其他并发事务所干扰。这确保了在并发执行的情况下,数据库仍然保持一致性。

  4. 持久性(Durability):一旦事务成功提交,其所做的改变将永久保存在数据库中,并且对后续的数据操作和故障具有持久影响。

 

  1. 开始事务:
START TRANSACTION; -- 或者使用简写形式:BEGIN;
  1. 提交事务(将更改保存到数据库):
COMMIT;
  1. 回滚事务(撤销更改):
ROLLBACK;
 
案例:
以上代码首先启动了一个事务,然后定义了转账金额和账户。接下来,我们查询转出账户的余额,并根据余额是否足够进行不同的操作。如果余额足够,我们执行转账操作并提交事务。如果余额不足,我们回滚事务,撤销所有更改。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
START TRANSACTION;
 
-- 定义转账的金额和账户
SET @transfer_amount = 100.00;
SET @from_account = 'A12345';
SET @to_account = 'B67890';
 
-- 检查转出账户余额是否足够
SELECT balance INTO @from_balance FROM bank_accounts WHERE account_number = @from_account;
 
IF @from_balance >= @transfer_amount THEN
    -- 转出账户扣款
    UPDATE bank_accounts SET balance = balance - @transfer_amount WHERE account_number = @from_account;
     
    -- 转入账户收款
    UPDATE bank_accounts SET balance = balance + @transfer_amount WHERE account_number = @to_account;
     
    -- 提交事务
    COMMIT;
    SELECT 'Transfer successful.';
ELSE
    -- 余额不足,回滚事务
    ROLLBACK;
    SELECT 'Insufficient balance. Transfer failed.';
END IF;

  

posted on   黑逍逍  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!



点击右上角即可分享
微信分享提示