Показать сообщение отдельно
Старый 14.05.2014, 08:52   #1  
CHESER85 is offline
CHESER85
Участник
 
93 / 11 (1) +
Регистрация: 04.08.2011
Адрес: Ufa
Записей в блоге: 1
TTSBegin/TTSAbort. Насколько безопасен для базы данных этот код?
Доброго времени суток уважаемые форумчане моего любимого форума!
Возникла задача: сделать расчет зарплаты для человека, но оклад и другие значения ставок брать по состоянию на раннюю дату. Ну для определенности пусть будет 31.03.2014. Естетственно, не хочется переписывать алгоритм расчета зарплаты, который уже заложен в счетчиках и я придумал следующий ход: удалить данные из значений ставок начиная с 01.04.2014, вызвать счетчики расчета зарплаты по табелю, получить суммы по видам зарплаты и далее ОТКАТИТЬ все назад. Грубо говоря код такой:

static void Job60(Args _args)
{
RPayRateTrans RPayRateTrans;
;
// .. здесь нет никаких транзакций
ttsbegin;
delete_from RPayRateTrans where RPayRateTrans.RateTypeAC == 'табельный номер' && RPayRateTrans.RateDate >= 01\04\2014;
// .. здесь производятся расчеты зарплаты, вызовы счетчиков, никаких вложенных транзакций тут нет
ttsabort;
// .. здесь все восстановлено.
}

Вопрос: хотелось бы узнать внутренний механизм а именно: реально ли происходит удаление данных из базы данных (т.к. внутри транзакции я проверял, значения ставок РЕАЛЬНО изменяются), а потом обратно они восстанавливаются? И насколько это безопасно для базы данных? Не получится ли так, что данные "нечаянно" удалятся? Хотелось бы знать все подводные камни данного подхода, т.к. есть скептики которые говорят, что "я бы так на рабочей базе не делал".