如何在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
我正在尝试在 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