Насколько я знаю, если вы откроете транзакцию SQL и в ней произойдет ошибка, она автоматически откатится.
Итак, есть ли смысл помещать транзакцию в блок try-catch, например показано здесь или здесь .
Кроме того, set xact_abort on
сделает блок try-catch устаревшим в любом случае?