我什么时候需要提交?

时间:2013-10-15 12:40:10

标签: sql transactions commit

我在SQL中听到我不必提交每个语句。也许创造我没有。 所以你能回答我必须提交哪些陈述吗? 我读过,我必须提交所有交易,但我不知道这是什么,在任何地方都找不到。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

根据SQL标准,大多数需要事务的语句都会自动打开一个。

如果语句成功完成,某些数据库引擎(如SQL Server)将(默认情况下)自动提交事务。请参阅Autocommit Transactions

  

自动提交模式是SQL Server数据库引擎的默认事务管理模式。每个Transact-SQL语句在完成时都会提交或回滚

SQL Server还具有Implicit Conversions模式,该模式将使事务处于打开状态,直到明确提交为止。

当以第二种这样的模式运行时(默认情况下,我相信,对于Oracle),或者如果您已明确创建了一个事务,那么当您提交时,由您作为开发人员决定交易。应该是在您完成针对数据库的“完整”操作集时。

答案 1 :(得分:0)

如果您BEGIN进行了一次交易,那么您必须ROLLBACKCOMMIT

示例:

BEGIN TRAN
    --Your code 
    INSERT INTO
    NewTable
    SELECT *
    FROM TABLE
COMMIT TRAN

如果您不使用它,则会在执行时提交。因此,以下内容将失败或被提交:

INSERT INTO
NewTable
SELECT *
FROM Table

如果出现错误(如数据库中没有NewTable),执行将引发错误,事务将回滚。如果没有错误,将提交交易。