如何在Firebird中使用交易?

问题描述 投票:6回答:4

在MS SQL Server中,我可以轻松地将多个insert语句放入事务中,如下所示:

begin tran
insert into mytable values (1, 2, 3)
insert into mytable values (4, 5, 6)
commit tran

我试图在Firebird中做同样的事情,但我无法弄清楚语法。谷歌搜索“Firebird事务语法”返回没有任何用处。我已经发现足够知道存在事务支持,但没有关于如何正确使用它的示例。

所以我想我也可以问这里。有谁知道如何使用Firebird数据库的多个插入来编写事务?

sql sql-server database transactions firebird
4个回答
7
投票

补充@ Allan的答案(我赞成,BTW),这里有更多信息。

当您在SQL Server中执行begin tran时,并不意味着您现在正在启动事务。您已经在事务中,因为您已连接到数据库! begin tran真正做的是禁用“每个语句的自动提交”,这是SQL Server中的默认状态(除非另有说明)。

commit tran分别提交并恢复与“在每个声明中自动提交”状态的连接。

在任何数据库中,当您连接时,您已经处于事务中。这就是数据库的方式。例如,在Firebird中,即使只运行查询,也可以执行提交或回滚。

另一方面,某些数据库和连接库允许您使用“每个语句的自动提交”连接状态,这是SQL Server正在执行的操作。尽管该功能可能很有用,但它并不是很有说服力,并且会让初学者认为他们“不在交易中”。


6
投票

Firebird总是使用事务。只要您在数据库中进行更改,该事务就会立即启动,并在您提交之前保持对该会话的打开状态。使用您的代码,它只是:

insert into mytable values (1, 2, 3);
insert into mytable values (4, 5, 6);
commit;

3
投票

从FB 2.5开始,可以从当前的内部开始新的交易。

IN AUTONOMOUS TRANSACTION
DO
  < simple statement | compound statement >

http://www.firebirdsql.org/rlsnotesh/rlsnotes25.html#rnfb25-psql-auton


0
投票

如果Firebird不需要额外的语法

commit; 

下面我提供Firebird会话的屏幕截图,展示它是如何工作的。

Click to take a look

© www.soinside.com 2019 - 2024. All rights reserved.