【问题标题】:Does SQL server autocomits?SQL Server 是否自动提交?
【发布时间】:2015-05-22 04:40:13
【问题描述】:

我有一个应用程序,它不断向表中插入行。使用存储过程。

根据我目前的搜索,Oracle 需要提交,但 sql server 会自动提交。

我找不到任何可靠的参考来确认上述内容。

所以问题:Sql server 是否需要在每次插入和删除(在存储过程中)之后提交还是自动提交?

【问题讨论】:

标签: sql-server


【解决方案1】:

SQL 将默认提交。如果你不想让它提交,你可以开始一个TRANSACTION,然后你可以选择COMMIT TRANSACTION或者ROLLBACK TRANSACTION

更多信息: https://msdn.microsoft.com/en-us/library/ms188929.aspx?f=255&MSPPError=-2147217396

【讨论】:

    【解决方案2】:

    答案可能很复杂,具体取决于配置和您的确切代码,但通常 Sql Server 会在每个操作中写入。出于所有实际目的,如果您执行以下操作:

    CREATE TABLE dbo.DataTable( Value nvarchar(max) ) 
    
    GO
    
    CREATE PROC dbo.WriteData
      @data NVARCHAR(MAX)
    AS BEGIN
    
      INSERT INTO DataTable( Value ) VALUES ( @data )
    
    END
    
    GO
    
    EXEC dbo.WriteData 'Hello World'
    
    SELECT    * 
    FROM      DataTable
    
    DROP TABLE dbo.DataTable
    DROP PROC dbo.WriteData
    

    一旦 proc 完成,数据就会被提交。同样,根据许多因素,此时间可能会改变或延迟。

    但是,听起来您是在询问是否“插入”数据,除非您启动了交易,否则无需完成交易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 2012-06-04
      • 1970-01-01
      • 2011-02-19
      • 2023-03-15
      相关资源
      最近更新 更多