сначала что-то меняем, проверяем что вышло, потом меняем обратно а потом дропаем транзакцию
Это когда-то мы смеялись над кодом белорусских наших напарников из Института Кибенематики, в котором, перед тем как обнулить переменную, проверяют, уж не нуль ли она уже, типа а шо тогда и занулять если она нуль.