MySQL - 回滚语句



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

数据库事务是指将一个或多个更改作为数据库上的单个操作传播。MYSQL 使用 SET autocommit、START TRANSACTION、COMMIT 和 ROLLBACK 语句提供对事务的支持。

COMMIT 语句保存当前事务中所做的所有修改。

回滚语句

ROLLBACK 操作撤消当前事务所做的所有更改,即如果调用此语句,则所有修改都会回滚到上次提交或 START TRANSACTION 语句。

语法

以下是 MySQL **ROLLBACK** 语句的语法:

ROLLBACK

示例

MySQL 在执行每个语句后都会保存所做的更改。要自动保存更改,请设置 autocommit 选项,如下所示:

SET autocommit=0;

假设我们已使用 CREATE 语句在 MySQL 数据库中创建了一个名为 Players 的表,如下所示:

CREATE TABLE Players(
   ID INT,
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Date_Of_Birth date,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255),
   PRIMARY KEY (ID)
);

现在,我们将使用 INSERT 语句在 Players 表中插入 3 条记录:

Insert into Players values
(1, 'Shikhar', 'Dhawan', DATE('1981-12-05'), 'Delhi', 'India');
(2, 'Jonathan', 'Trott', DATE('1981-04-22'), 'CapeTown', 'SouthAfrica'); 
(3, 'Kumara', 'Sangakkara', DATE('1977-10-27'), 'Matale', 'Srilanka');

以下查询保存更改:

COMMIT;

现在,让我们使用 INSERT 语句添加更多记录:

Insert into Players values
(4, 'Virat', 'Kohli', DATE('1988-11-05'), 'Delhi', 'India');
(5, 'Rohit', 'Sharma', DATE('1987-04-30'), 'Nagpur', 'India');
(6, 'Ravindra', 'Jadeja', DATE('1988-12-06'), 'Nagpur', 'India');
(7, 'James', 'Anderson', DATE('1982-06-30'), 'Burnley', 'England');

您可以使用 SELECT 语句检索上面创建表的內容,如下所示:

SELECT * FROM Players;

输出

以下是上述程序的输出:

ID First_Name Last_Name Date_Of_Birth Place_Of_Birth Country
1 Shikhar Dhawan 1981-12-05 Delhi India
2 Jonathan Trott 1981-04-22 CapeTown SouthAfrica
3 Kumara Sangakkara 1977-10-27 Matale Srilanka
4 Virat Kohli 1988-11-05 Delhi India
5 Rohit Sharma 1987-04-30 Nagpur India
6 Ravindra Jadeja 1988-12-06 Nagpur India
7 James Anderson 1982-06-30 Burnley England

以下语句会回滚上次提交后的更改。

ROLLBACK;

如果我们回滚一个事务,则上次提交后所做的所有更改都将被回滚。由于我们在提交后插入了最后 4 条记录,因此它们将在回滚时被回滚。

SELECT * FROM Players;

输出

上述查询产生以下输出:

ID First_Name Last_Name Date_Of_Birth Place_Of_Birth Country
1 Shikhar Dhawan 1981-12-05 Delhi India
2 Jonathan Trott 1981-04-22 CapeTown SouthAfrica
3 Kumara Sangakkara 1977-10-27 Matale Srilanka
广告

© . All rights reserved.