Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

TSQL:Опитайте-уловете транзакция в Trigger

Според моя опит всяка грешка, уловена при try catch в тригер, ще върне цялата транзакция; може да можете да използвате транзакция за запазване. Мисля, че трябва да погледнете какво се случва в „Още sql“ и да определите дали можете да пишете оператори case / if около него, за да спрете грешката.

Това, което може да можете да направите в зависимост от това, което правите, е да използвате запазване на транзакция и заснемете това в catch

Във вашия код нещо подобно

SAVE TRANSACTION BeforeUpdate;
BEGIN TRY
        --Some More SQL
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION BeforeUpdate;
        return
END CATCH


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да премахнете бели интервали от низ в SQL Server

  2. Конкатениране на редове от изчислена колона с псевдоним

  3. Използвайте Excel 2010 за четене/запис в база данни на SQL Server 2008 с помощта на съхранени процедури

  4. Безкраен цикъл в CTE при синтактичен анализ на самореферентна таблица

  5. Избягвайте тези 4 често срещани грешки в DBA