在MS SQL Server中,我可以轻松地将多个插入语句放入事务中,如下所示:
begin tran
insert into mytable values (1, 2, 3)
insert into mytable values (4, 5, 6)
commit tran
我正在尝试在Firebird中做同样的事情,但我无法弄清楚语法。谷歌搜索“Firebird事务语法”返回没有任何用处。我发现足够知道事务支持存在,但没有关于如何正确使用它的示例。
所以我想我可以在这里问一下。有没有人知道如何使用Firebird数据库的多个插入来编写事务?
答案 0 :(得分:7)
补充@ Allan的答案(我赞成,BTW),这里有更多信息。
在SQL Server中执行begin tran
时,并不意味着您现在正在启动事务。您已经在事务中,因为您已连接到数据库! begin tran
真正做的是禁用“每个语句的自动提交”,这是SQL Server中的默认状态(除非另有说明)。
分别提交commit tran
并将连接恢复为“在每个语句中自动提交”状态。
在任何数据库中,当您连接时,您在事务中已经。这就是数据库的方式。例如,在Firebird中,即使只运行查询,也可以执行提交或回滚。
另一方面,某些数据库和连接库允许您使用“每个语句的自动提交”连接状态,这正是SQL Server正在执行的操作。尽管该功能可能很有用,但它不是很有说服力,并且会让初学者认为他们“不在交易中”。
答案 1 :(得分:6)
Firebird始终使用交易。只要您在数据库中进行更改,该事务就会立即启动,并在您提交之前保持对该会话的打开状态。使用您的代码,它只是:
insert into mytable values (1, 2, 3);
insert into mytable values (4, 5, 6);
commit;
答案 2 :(得分:3)
从FB 2.5开始,可以从当前的内部开始新的交易。
IN AUTONOMOUS TRANSACTION
DO
< simple statement | compound statement >
http://www.firebirdsql.org/rlsnotesh/rlsnotes25.html#rnfb25-psql-auton
答案 3 :(得分:0)