SQL |交易
什么是交易?
事务将一组任务组合成一个执行单元。每个事务都以特定任务开始,并在组中的所有任务成功完成时结束。如果任何任务失败,则事务失败。因此,一个事务只有两个结果:成功或失败。
不完整的步骤会导致交易失败。根据定义,数据库事务必须是原子的、一致的、隔离的和持久的。这些通常被称为
酸性质。
如何使用 SQL 实现事务?
以下命令用于控制事务。需要注意的是,这些语句不能在创建表时使用,只能与 DML 命令一起使用,例如 - INSERT、UPDATE 和 DELETE。
1. BEGIN TRANSACTION:表示显式或本地事务的起点。
句法:
BEGIN TRANSACTION transaction_name ;
2. SET TRANSACTION:在事务上放置名称。
句法:
SET TRANSACTION [ READ WRITE | READ ONLY ];
3. COMMIT:如果在单个事务中所有语句都按顺序排列,则所有更改都一起记录在数据库中,称为已提交。 COMMIT 命令将自上次 COMMIT 或 ROLLBACK 命令以来的所有事务保存到数据库。
句法:
COMMIT;
示例:示例表 1
以下是一个示例,它将从表中删除年龄 = 20 的那些记录,然后提交数据库中的更改。
查询:
DELETE FROM Student WHERE AGE = 20;
COMMIT;
输出:
因此,表中的两行将被删除,SELECT 语句看起来像,
4. ROLLBACK:如果任何 SQL 分组语句发生任何错误,则需要中止所有更改。撤销更改的过程称为回滚。此命令只能用于撤消自上次发出 COMMIT 或 ROLLBACK 命令以来的事务。
句法:
ROLLBACK;
例子:
从上面的示例Sample table1中,
从表中删除年龄 = 20 的记录,然后回滚数据库中的更改。
查询:
DELETE FROM Student WHERE AGE = 20;
ROLLBACK;
输出:
5. SAVEPOINT:在要回滚的事务组内创建点。
SAVEPOINT 是事务中的一个点,您可以在其中将事务回滚到某个点,而无需回滚整个事务。
Savepoint 命令的语法:
SAVEPOINT SAVEPOINT_NAME;
此命令仅用于在所有事务中创建 SAVEPOINT。
通常 ROLLBACK 用于撤消一组事务。
回滚到 Savepoint 命令的语法:
ROLLBACK TO SAVEPOINT_NAME;
您可以随时 ROLLBACK 到任何 SAVEPOINT 以将适当的数据返回到其原始状态。
例子:
从上面的示例Sample table1中,
从表中删除年龄 = 20 的记录,然后通过保留保存点回滚数据库中的更改。
查询:
SAVEPOINT SP1;
//Savepoint created.
DELETE FROM Student WHERE AGE = 20;
//deleted
SAVEPOINT SP2;
//Savepoint created.
这里 SP1 是在删除之前创建的第一个 SAVEPOINT。在此示例中,发生了一次删除。
删除后再次创建 SAVEPOINT SP2。
输出:
删除已经发生,让我们假设您已经改变主意并决定回滚到您在删除之前标识为 SP1 的 SAVEPOINT。
此语句撤消删除,
ROLLBACK TO SP1;
//Rollback completed.
6. RELEASE SAVEPOINT:-此命令用于删除您创建的 SAVEPOINT。
句法:
RELEASE SAVEPOINT SAVEPOINT_NAME
释放 SAVEPOINT 后,您不能再使用 ROLLBACK 命令撤消自上次 SAVEPOINT 以来执行的事务。
它用于启动数据库事务并用于指定后续事务的特征。