Rollback SQL

2024 年 8 月 29 日 | 4 分钟阅读

ROLLBACK 是 SQL 中的一个命令,用于撤销数据库中最近完成的一组事务。当数据库出现问题时,会使用 rollback 命令,此时撤销自上次成功提交以来对数据库所做的所有更改变得至关重要。

当执行 ROLLBACK 命令时,它会撤销对数据库所做的当前事务。之后,数据库将恢复到事务开始之前的状态。

ROLLBACK 命令的语法如下:

需要注意的是,ROLLBACK 命令会撤销数据库中所有最近的事务。如果您不想回滚所有事务,可以使用 COMMIT 命令,它可以使成功的事务永久生效。Rollback 按相反的顺序执行,因此它首先撤销前一个事务,然后是其他事务。如果要回滚最后两个事务,则需要在最后两个事务之前使用 COMMIT 命令。这样做将使除最后两个事务之外的所有事务永久生效。我们将在示例中进一步讨论 COMMIT 和 ROLLBACK 命令。

让我们通过以下示例来正确理解 ROLLBACK 命令。

示例 1

假设我们创建了一个名为 employee_table 的表,其中包含 emp_id、emp_name、emp_gender、emp_age、emp_city 和 emp_salary 字段。

emp_idemp_nameemp_genderemp_ageemp_cityemp_salary
024RohanM20阿格拉15000
025VishalM21孟买12000
026VijayM20博帕尔11000
027AvniF25德拉敦17000
028PalakF24阿格拉18000

我们将使用以下命令从 employee_table 中删除一些数据:

输出

如您所见,薪资低于 15,000 的行已被删除。

emp_idemp_nameemp_genderemp_ageemp_cityemp_salary
024RohanM20阿格拉15000
027AvniF25德拉敦17000
028PalakF24阿格拉18000

现在,我们将使用 ROLLBACK 命令来撤销数据库中最近使用的命令;然后我们将使用 SELECT 命令来查看表。

最终输出

我们将得到在使用 DELETE 命令之前的表。

emp_idemp_nameemp_genderemp_ageemp_cityemp_salary
024RohanM20阿格拉15000
025VishalM21孟买12000
026VijayM20博帕尔11000
027AvniF25德拉敦17000
028PalakF24阿格拉18000

示例 2

让我们考虑另一个名为 student_table 的表,其中包含 stu_id、stu_name、stu_gender、stu_age、stu_stream 和 stu_marks 字段。

stu_idstu_namestu_genderstu_agestu_streamstu_marks
1AbhinavM16商业90
2KaifM17科学82
3ZARAF17科学94
4HarshM18商业75
5AyushiF17科学80

我们将使用以下命令更新 student_table 的数据:

输出

如您所见,stu_id = 2 的分数已更新。

stu_idstu_namestu_genderstu_agestu_streamstu_marks
1AbhinavM16商业90
2KaifM17科学85
3ZARAF17科学94
4HarshM18商业75
5AyushiF17科学80

现在,我们将使用 ROLLBACK 命令撤销最后一个命令。

最终输出

我们将得到在使用 UPDATE 命令之前的表。

stu_idstu_namestu_genderstu_agestu_streamstu_marks
1AbhinavM16商业90
2KaifM17科学82
3ZARAF17科学94
4HarshM18商业75
5AyushiF17科学80

示例 3

让我们考虑另一个名为 customer_table 的表,其中包含 cust_id、cust_name、cust_gender、cust_age 和 cust_address 详细信息。

cust_idcust_namecust_gendercust_agecust_address
1ShreyaF25孟买
2拉格哈夫M21阿格拉
3ShaktiF26Roorkee
4RanveerM24法里达巴德
5RubinaF20Roorkee

现在,我们将使用以下命令更新 customer_table 中的数据:

输出

您可以在下方看到更新后的表格。

cust_idcust_namecust_gendercust_agecust_address
1ShreyaF27孟买
2拉格哈夫M21阿格拉
3ShaktiF26Roorkee
4RanveerM24法里达巴德
5RubinaF20勒克瑙

现在,如果您只想回滚最后一个命令,因为它是错误的,那么就需要在使用最后一个命令之前使用 COMMIT 命令,以使成功的事务永久生效,但最后一个命令除外。

我们将借助 ROLLBACK 命令撤销最后一个命令。

最终输出

正如您在表中看到的,只有最后一个命令被撤销了。

cust_idcust_namecust_gendercust_agecust_address
1ShreyaF27孟买
2拉格哈夫M21阿格拉
3ShaktiF26Roorkee
4RanveerM24法里达巴德
5RubinaF20Roorkee

上面讨论的示例有助于您了解 ROLLBACK 命令的确切作用。

ROLLBACK 命令可以由数据库管理系统自动运行,也可以由开发人员手动运行,以便在数据库出现问题时回滚更改。

结论

在本文中,我们学习了 SQL 中的 ROLLBACK,它基本上是一个反转数据库中最新事务的命令。它会恢复旧数据并丢弃新事务。


下一主题SQL RANK 函数