MySQL - START TRANSACTION 语句



一般来说,事务是一系列以逻辑顺序完成的工作单元或序列,无论是用户手动完成还是某种数据库程序自动完成。

数据库事务是对数据库进行的一项或多项更改的传播,作为一个单一操作。

例如,如果您将一定金额从一个账户转到另一个账户视为单个事务。这基本上包含三个步骤 -

  • 读取要转账的金额。
  • 验证发送方账户中是否有足够的金额。
  • 从发送方账户贷记金额。
  • 从接收方账户借记金额。

为了转账,所有上述操作都应成功完成。为了确保这一点,您可以使用事务并将所有这些步骤视为单个操作。

MYSQL 使用 SET autocommit、START TRANSACTION、COMMIT 和 ROLLBACK 语句提供对事务的支持。

START TRANSACTION 语句

MySQL 的 START TRANSACTION 语句用于开始一个新事务。

语法

以下是 START TRANSACTION 语句的语法 -

START TRANSACTION [transaction_characteristic
[, transaction_characteristic]...]

示例

假设我们创建了一个名为 emp 的表,并用 3 条记录填充它,如下所示 -

CREATE TABLE accounts(
   Name VARCHAR(255), 
   DOB DATE, 
   Brach VARCHAR(255), 
   balance INT
);

现在,让我们向 accounts 表中插入一些记录 -

INSERT INTO accounts VALUES 
('Amit', DATE('1970-01-08'), 'Hyderabad', 2554),
('Sumith', DATE('1990-11-02'), 'Vishakhapatnam', 5589),
('Sudha', DATE('1980-11-06'), 'Vijayawada', 5587);

您可以使用 SELECT 语句验证表的內容,如下所示 -

SELECT * FROM accounts;

输出

以下是上述查询的输出 -

姓名 出生日期 分行 余额
阿米特 1970-01-08 海德拉巴 2554
苏米特 1990-11-02 维沙卡帕特南 5589
苏达 1980-11-06 维贾亚瓦达 5587

在下面的 MySQL 查询集中,我们启动一个事务并将 1500/- 从阿米特的账户转到苏达的账户。

START TRANSACTION;

UPDATE accounts SET balance= balance-1500 WHERE Name='Amit';
UPDATE accounts SET balance= balance+1500 WHERE Name='sudha';

COMMIT;

如果您再次验证 accounts 表的内容,您可以观察到更新后的余额。

SELECT * FROM accounts;

输出

上述程序产生以下输出 -

姓名 出生日期 分行 余额
阿米特 1970-01-08 海德拉巴 1054
苏米特 1990-11-02 维沙卡帕特南 5589
苏达 1980-11-06 维贾亚瓦达 7087
广告

© . All rights reserved.