我在 SQL Server 2005 中这样做。我有一个表,只有一个 int 类型的列,你不能在其中插入 char。
DECLARE @intErrorCode INT
BEGIN TRAN
Update TestTable set A='a' where A=3 --UPDATE TO CHAR, FAIL
SELECT @intErrorCode = @@ERROR
IF (@intErrorCode <> 0) GOTO PROBLEM
COMMIT TRAN
PROBLEM:
IF (@intErrorCode <> 0) BEGIN
PRINT 'Unexpected error occurred!'
ROLLBACK TRAN
END
我期待看到“发生意外错误!” 结果。但我实际看到的是:将 varchar 值“a”转换为数据类型 int 时转换失败。
似乎我的 SQL Server 根本没有将我的代码作为事务......它击中了失败线并在那之后立即退出运行。
我在这里做错了什么?