0

我对 SQL 相当陌生。目前,我正在尝试了解交易,但我迷路了。所以我想你能不能给我看几个 SQL 事务的例子。

我认为我的权利是事务通常使用 DBM 软件实现,然后根据我在用户界面中所做的工作将它们构建在一起。

因此,例如,如果我想删除多行,事务会是什么样子?会不会是这样:

  1. 保存点 sp1;
  2. 从客户中删除 fname = “James” AND lname = “Belik
  3. 犯罪;
  4. 保存点 sp2;
  5. 从客户中删除 fname = “James” AND lname = “Belik;
  6. 犯罪;

或者如果不是,那会怎样?还有 SET TRANSACTION 去哪儿了?

非常感谢任何帮助,谢谢。

4

2 回答 2

0

当您希望整个系列的 SQL 语句成功时使用事务。如果该系列的任何部分失败,则数据库将回滚到 BEGIN TRANSACTION 之前的状态。您将整个 SQL 语句序列包装在一个事务中。

通常的例子是银行账户之间的转账。为此,我必须从一个帐户中扣除一个金额,并在另一个帐户中扣除相同的金额。两个操作都必须成功,因为如果只有一个成功,那么传输将不平衡。例如,如果贷记成功但借记失败,则有人得到了免费的钱。

于 2013-05-21T19:15:42.480 回答
0

您已经为 SQL(通用)、MySQL 和 Access 标记了您的问题,并且 SQL 的每种“风格”都可能有自己特定的语法(查看相关文档,例如,对于 MySQL,请参阅此处)。但是,一个通用的例子是

START TRANSACTION;
UPDATE BankAccount SET Balance=Balance-5 WHERE Owner='James';
UPDATE BankAccount SET Balance=Balance+5 WHERE Owner='Gord';
COMMIT;

如果第二个 UPDATE 语句失败,则整个事务被“回滚”并且两个账户余额保持不变。只有当两次更新都成功时,5 美元才会从您的帐户转移到我的帐户。

于 2013-05-21T21:03:12.893 回答