如何在SQL中使用回滚命令

How to use the rollback command in SQL

我正在尝试在 sql 中使用回滚命令,但它不起作用。

USE MFF

BEGIN TRANSACTION 
BEGIN TRY

    INSERT INTO dbo.people 
    VALES ('Nick', 1)

    COMMIT TRANSACTION
END TRY

BEGIN CATCH
    /* Ocurrió un error, deshacemos los cambios*/ 
    ROLLBACK TRANSACTION
    PRINT 'An error has occurred!'
END CATCH

我故意拼错了“vales”这个词,这样它就可以通过 catch 部分,但它出现得更早。我必须在数据库中启用某些东西吗?

我的需求是回滚一个更大的脚本,我想看看在出现错误时它是如何工作的。

您正尝试使用 try/catch 语法错误。这行不通,因为您的查询甚至无法正确解析。

您需要对有效查询执行 try/catch。这是一个使用你的逻辑的例子,稍微不同 people table:

create table #people (firstname varchar(100), ID INT PRIMARY KEY)
GO

--run this twice to see it succeed the first time, and throw your print error on the 2nd run.
BEGIN TRANSACTION 
BEGIN TRY

    insert into #people 
    values 
    ('Nick',1)
    COMMIT TRANSACTION
END TRY

BEGIN CATCH


    ROLLBACK TRANSACTION
    PRINT 'An error has occurred!'

END CATCH