【发布时间】:2016-02-17 02:35:55
【问题描述】:
我有一个要提交的事务,但不确定是否会在任何失败时回滚。我知道我可以在 c# 中使用 TransactionScope,如果发生错误,一切都会回滚。但我不太确定存储过程中的事务。所有在线示例都使用ROLLBACK 关键字进行回滚。如果我没有 ROLLBACK 关键字会怎样?
CREATE PROCEDURE CreatePost
@type INT,
@name VARCHAR(500)
AS
BEGIN
DECLARE @insertedId TABLE(Id INT)
DECLARE @id INT
BEGIN TRANSACTION
INSERT INTO [Post] ([Name], [Type])
OUTPUT inserted.Id INTO @insertedId
VALUES (@name, @type)
UPDATE [Tables] SET Ordinals =ordinals + 1
WHERE Id = @tableId
COMMIT
END
【问题讨论】:
-
此问题与所选帖子不重复。我只是问如果发生错误,上述存储过程是否会自动回滚。
-
重新打开。我不认为这是 this 的重复问题。
-
您可以创建一个小测试,在比提出这个问题的时间更短的时间内为您提供答案。下次当您对简单事物的行为方式有疑问时,请记住这一点。
标签: sql sql-server sql-server-2014