|
|
Подскажите. Правильно ли написан запрос SQL? |
☑ |
|
0
Невский Александр
18.11.10
✎
08:51
|
Хочу написать прямой запрос, который устанавливает на документах пометку на удаление. Все это хочу написать в транзакции - в случае успешного ее выполнения данные должны сохраняться, в случае неудачи - нет.
Написал вот так:
SET IMPLICIT_TRANSACTIONS OFF
BEGIN TRANSACTION PometkaNaUdalenie
SAVE TRANSACTION Point1
UPDATE _Document109 SET _Document109._Marked = 1 WHERE _Document109._Date_Time >="+"'"+Формат(НачалоДня(ДатаНакладных),"ДЛФ=DT")+"' and _Document109._Date_Time<='"+Формат(КонецДня(ДатаНакладных),"ДЛФ=DT")+"'"+ " and _Document109._Marked = 0
TRY
COMMIT
CATCH ROLLBACK TRANSACTION PometkaNaUdalenie Point1
Скажите, правильно ли насан сам запрос (именно блок транзакции), или нет? Поправьте меня пожалуйста ...
|
|
|
1
Егор Сергеевич
18.11.10
✎
08:59
|
COMMIT TRANSACTION имхо...
|
|
|
2
Невский Александр
18.11.10
✎
09:00
|
(1)это понятно, доделаю ... Мне сама логика важна - "TRY ... CATCH" - вот это верно?
|
|
|
3
Невский Александр
18.11.10
✎
09:01
|
для сохранения изменений - если удалось сохранить, то все нормально, если нет, то делаем откат транзакции
|
|
|
4
Ненавижу 1С
гуру
18.11.10
✎
09:02
|
я вот этого не понимаю, а что если все плохо, она сама не откатится?
|
|
|
5
Ненавижу 1С
гуру
18.11.10
✎
09:03
|
вообще не понимаю почему у MS SQL Server транзакциями можно управлять на сервере
|
|
|
6
Егор Сергеевич
18.11.10
✎
09:06
|
я бы сделал как-то так: BEGIN TRY BEGIN TRANSACTION; UPDATE _Document109 SET _Document109._Marked = 1 WHERE _Document109._Date_Time >="+"'"+Формат(НачалоДня(ДатаНакладных),"ДЛФ=DT")+"' and _Document109._Date_Time<='"+Формат(КонецДня(ДатаНакладных),"ДЛФ=DT")+"'"+ " and _Document109._Marked = 0 COMMIT TRANSACTION; END TRY BEGIN CATCH ROLLBACK TRANSACTION; END CATCH;
|
|
|
7
Егор Сергеевич
18.11.10
✎
09:09
|
Там есть про использование try...catch внутри транзакций
|
|
|
8
smitru
18.11.10
✎
09:20
|
(0) Жесть... а нафига изврат??? Ведь у тебя будут помечены на удаление ПРОВЕДЁННЫЕ документы, по которым наверняка есть движения в регистрах...
|
|
|
9
Невский Александр
18.11.10
✎
09:23
|
(8) все это доработано, движения тоже удаляются на данный момент меня интересует "try ... catch"
|
|
|
10
Невский Александр
18.11.10
✎
09:37
|
А может кто еще знает - чтобы мне быть точно уверенным - при отмене проведения документа и пометке ее на удаление - делается ли хоть какое-нибудь изменение (любое) в таблице табличной части этого документа?
|
|
|
11
Ненавижу 1С
гуру
18.11.10
✎
09:37
|
(10) не в таблице, а таблицАХ в общем случае имхо, нет
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший