📜  SQL |交易

📅  最后修改于: 2022-05-13 01:55:40.952000             🧑  作者: Mango

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 以来执行的事务。

它用于启动数据库事务并用于指定后续事务的特征。