gpt4 book ai didi

sql - 如果发生错误,此事务是否会回滚

转载 作者:行者123 更新时间:2023-12-02 07:24:16 26 4
gpt4 key购买 nike

我有一个事务要提交,但不确定如果出现任何问题是否会回滚。我知道我可以在 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

最佳答案

是的,如果事务没有到达COMMIT 语句,它会自动回滚。

这是一个简单的例子

样本表

create table tt(id int)

示例程序

CREATE PROCEDURE CreatePost
AS
BEGIN

BEGIN TRANSACTION

INSERT INTO tt values (1)

select cast('ldfsfds' as int)

COMMIT
END

执行程序并查询表

EXEC CreatePost    
select * from tt

结果

0 records

假设在执行过程之前没有记录,最终结果将是一个空表。

关于sql - 如果发生错误,此事务是否会回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35446851/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com