我正在做一些脚本测试,我想确保如果我在这个 Try Catch 中测试的更新子句:
BEGIN TRY
BEGIN TRAN
UPDATE NAME
SET NAME.ADDBY =
(CASE WHEN NAME.ADDBY = 'CONVERSION' THEN 'CONVERTED'
WHEN NAME.ADDBY = 'CJDOG'THEN 'CJDAREME'
WHEN NAME.ADDBY = 'npalerm' THEN 'REALLYLONGDETAILEDTEXT'
ELSE NAME
END)
COMMIT TRAN
END TRY
BEGIN CATCH
IF @@TRANCOUNT >0
PRINT ERROR_MESSAGE()
ROLLBACK TRAN
END CATCH
PRINT @@TRANCOUNT
失败,其他行被更新,只有那些没有错误的行通过。
Currenty因为它在 TRY CATCH 中,所以有一个 ROLLBACK 可以确保没有任何事情通过。
但是当我尝试只运行 UPDATE 部分时,错误会终止整个脚本,而不是更新那些不会导致错误的脚本,在这种情况下 npalerm 太长了。
有任何想法吗?
我知道它的描述很长,我本可以只包含更新,但出于详细目的,我将它包含在 Catch 中。