|
14.05.2014, 08:52 | #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; // .. здесь все восстановлено. } Вопрос: хотелось бы узнать внутренний механизм а именно: реально ли происходит удаление данных из базы данных (т.к. внутри транзакции я проверял, значения ставок РЕАЛЬНО изменяются), а потом обратно они восстанавливаются? И насколько это безопасно для базы данных? Не получится ли так, что данные "нечаянно" удалятся? Хотелось бы знать все подводные камни данного подхода, т.к. есть скептики которые говорят, что "я бы так на рабочей базе не делал". |
|
14.05.2014, 09:11 | #2 |
NavAx
|
"Да ты не бойся!" (c) Наша Раша
Подход приемлемый, может быть только проблема с номерными сериями, они не откатяться, а сдвинуться. Ну и, конечно, я бы протестировал это на тестовой базе. Мало ли как работает алгоритм, может там есть работа в отдельных транзакциях, как у номерных серий, тогда надо делать по другому. |
|
14.05.2014, 09:21 | #3 |
Участник
|
"Да ты успокоооооойся, я сто раз так делал!"
никаких номерных серий в программе не будет использоваться. и на тестовой уже протестировано, работает отлично. но вдруг... что нибудь может экстра ординарное случится? |
|
14.05.2014, 09:42 | #4 |
NavAx
|
Цитата:
Даже в стандарте так работает предварительный просмотр проводок по журналам ГК. |
|
14.05.2014, 17:48 | #5 |
Программатор
|
Юзаю такой способ, не часто, но юзаю - проблем не было
|
|