Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

TSQL:transação Try-Catch no gatilho


Na minha experiência, qualquer erro detectado em uma tentativa de captura em um gatilho reverterá toda a transação; você pode usar uma transação de salvamento. Eu acho que você precisa olhar para o que está acontecendo em "Um pouco mais de sql" e determinar se você pode escrever instruções case/if em torno dele para parar o erro.

O que você pode fazer dependendo do que está fazendo é usar uma transação e capturar isso na captura

No seu código algo assim
SAVE TRANSACTION BeforeUpdate;
BEGIN TRY
        --Some More SQL
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION BeforeUpdate;
        return
END CATCH