事务(Transaction)是一系列数据库操作的执行单元,这些操作要么全部成功地执行,要么全部回滚(撤销),从而确保数据库的数据一致性和完整性。
-
原子性(Atomicity):事务被视为一个不可分割的原子操作单元,要么全部执行成功,要么全部失败回滚。如果事务中的任何操作失败,那么所有的操作都会被撤销,数据库状态将回滚到事务开始前的状态。
-
一致性(Consistency):事务的执行将数据库从一个合法状态转换为另一个合法状态。这意味着在事务执行前和执行后,数据库必须满足所有预定义的规则和约束。
-
隔离性(Isolation):事务的执行是相互隔离的,一个事务的操作不会被其他并发事务所干扰。这确保了在并发执行的情况下,数据库仍然保持一致性。
-
持久性(Durability):一旦事务成功提交,其所做的改变将永久保存在数据库中,并且对后续的数据操作和故障具有持久影响。
- 开始事务:
START TRANSACTION; -- 或者使用简写形式:BEGIN; - 提交事务(将更改保存到数据库):
COMMIT; - 回滚事务(撤销更改):
ROLLBACK;案例:
以上代码首先启动了一个事务,然后定义了转账金额和账户。接下来,我们查询转出账户的余额,并根据余额是否足够进行不同的操作。如果余额足够,我们执行转账操作并提交事务。如果余额不足,我们回滚事务,撤销所有更改。
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;
浙公网安备 33010602011771号