SQL TCL 命令(SavePoint、RollBack 和 Commit)

在 SQL 中,SAVEPOINTROLLBACKCOMMIT 是事务控制语言 (TCL) 的重要组成部分。

SQL 中的 TCL 有助于有效管理数据库中的事务。


SQL SAVEPOINT

SQL 中的 SAVEPOINT 命令允许我们在事务中设置一个点,我们可以回滚到该点,而不会影响整个事务。

这对于管理长时间或复杂的事务特别有用。

设想一个场景,我们正在更新 Customers 表中的记录,并希望在每次更新后创建一个保存点。操作方法如下:

-- start transaction
BEGIN TRANSACTION;

-- update customer 1's age
UPDATE Customers SET age = 32 WHERE customer_id = 1;

-- create a savepoint named SP1
SAVEPOINT SP1;

-- update customer 2's country
UPDATE Customers SET country = 'Canada' WHERE customer_id = 2;

-- create a savepoint named SP2
SAVEPOINT SP2;

-- If an error occurs, we can rollback to SP1 or SP2

在这里,SAVEPOINT SP1SAVEPOINT SP2 允许我们回滚到这些点,而不会撤销所有先前的更改。


SQL 中的 ROLLBACK

SQL 中的 ROLLBACK 命令用于撤销尚未提交到数据库的事务。它是一种将数据库状态恢复到上一个已提交状态的方法。

想象一个场景,我们需要从 Orders 表中删除一条记录,但决定回滚事务。

-- start transaction
BEGIN TRANSACTION;

-- delete order with order_id 5
DELETE FROM Orders WHERE order_id = 5;

-- after some operations, decide to rollback
ROLLBACK;

在这里,ROLLBACK 语句会撤销订单的删除。


SQL 中的 COMMIT

SQL 中的 COMMIT 命令用于永久保存当前事务中所做的所有更改。

让我们更新 Shippings 表中的一条记录,然后提交事务。查询如下:

-- start transaction
BEGIN TRANSACTION;

-- update the status of shipping_id 1
UPDATE Shippings SET status = 'Shipped' WHERE shipping_id = 1;

-- commit the transaction
COMMIT;

在这里,COMMIT 语句永久保存了对 Shippings 表所做的更改。


另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战