在 SQL 中,SAVEPOINT
、ROLLBACK
和 COMMIT
是事务控制语言 (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 SP1
和 SAVEPOINT 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 表所做的更改。
另请阅读