gpt4 book ai didi

sql-server - 当字符串数据被截断时,如何回滚 SQL 中的事务?

转载 作者:行者123 更新时间:2023-12-01 19:09:12 24 4
gpt4 key购买 nike

目前,我有一个大型导入过程,我正在尝试将其包装在一个事务中,因此如果有任何问题 - 我可以回滚。我遇到的问题是,当trans内部的TSQL崩溃时,出现以下SQL错误时它不会回滚

Msg 8152, Level 16, State 14, Line 249
String or binary data would be truncated.
The statement has been terminated.

下面封装了这个导入 TSQL

DECLARE @error INT
SELECT @error = 0
BEGIN TRANSACTION

--** begin import TSQL

--** end import TSQL

SELECT @error = @@error
IF @error != 0 GOTO handle_error

COMMIT

handle_error:
IF @error != 0
BEGIN
ROLLBACK
END

最佳答案

如果您使用的是 SQL 2005,您可以尝试:

BEGIN TRANSACTION
BEGIN TRY
--Run your Statements
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
DECLARE @Msg NVARCHAR(MAX)
SELECT @Msg=ERROR_MESSAGE()
RAISERROR('Error Occured: %s', 20, 101,@msg) WITH LOG
END CATCH

关于sql-server - 当字符串数据被截断时,如何回滚 SQL 中的事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/639238/

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