【发布时间】:2015-05-22 04:40:13
【问题描述】:
我有一个应用程序,它不断向表中插入行。使用存储过程。
根据我目前的搜索,Oracle 需要提交,但 sql server 会自动提交。
我找不到任何可靠的参考来确认上述内容。
所以问题:Sql server 是否需要在每次插入和删除(在存储过程中)之后提交还是自动提交?
【问题讨论】:
标签: sql-server
我有一个应用程序,它不断向表中插入行。使用存储过程。
根据我目前的搜索,Oracle 需要提交,但 sql server 会自动提交。
我找不到任何可靠的参考来确认上述内容。
所以问题:Sql server 是否需要在每次插入和删除(在存储过程中)之后提交还是自动提交?
【问题讨论】:
标签: sql-server
SQL 将默认提交。如果你不想让它提交,你可以开始一个TRANSACTION,然后你可以选择COMMIT TRANSACTION或者ROLLBACK TRANSACTION
更多信息: https://msdn.microsoft.com/en-us/library/ms188929.aspx?f=255&MSPPError=-2147217396
【讨论】:
答案可能很复杂,具体取决于配置和您的确切代码,但通常 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 完成,数据就会被提交。同样,根据许多因素,此时间可能会改变或延迟。
但是,听起来您是在询问是否“插入”数据,除非您启动了交易,否则无需完成交易。
【讨论】: