|
|
|
INSERT в откатываемой транзакции
|
|||
|---|---|---|---|
|
#18+
Нужно в транзакции, которая пойдет на RollBack, произвести неоткатываемый INSERT. Господа, поделитесь опытом, пожалуйста! Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 16:43:22 |
|
||
|
INSERT в откатываемой транзакции
|
|||
|---|---|---|---|
|
#18+
Повторяю. На фиг? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 16:47:50 |
|
||
|
INSERT в откатываемой транзакции
|
|||
|---|---|---|---|
|
#18+
считается что не возможно.... попробуй чарез openquery(openrowset) вызвать процедуру для изменения... ага ..чуть не забыл ...SET REMOTE_PROC_TRANSACTIONS OFF до того.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 16:56:36 |
|
||
|
INSERT в откатываемой транзакции
|
|||
|---|---|---|---|
|
#18+
хотя не представляю для чего это может понадобится.... помоему через вложенные транзакции это можно решить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 17:01:29 |
|
||
|
INSERT в откатываемой транзакции
|
|||
|---|---|---|---|
|
#18+
Возможно. Но только в виде бага (MSSQL2000). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 17:02:03 |
|
||
|
INSERT в откатываемой транзакции
|
|||
|---|---|---|---|
|
#18+
ну это небаг..... это лучше чем свою расширенную процедуру писать и схитрить в ней... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 17:04:25 |
|
||
|
INSERT в откатываемой транзакции
|
|||
|---|---|---|---|
|
#18+
Идет каскадный вызов процедур, внутри возникает ситуация, которую нужно детализировать, т.е. кроме Return, нужна кокретная информация. Верхняя процедура при получении ошибки, производит RollBack. Как пользователю засветить данные, на которых споткнулись? Print не подходит. Хотелось засунуть все, что надо в таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 17:07:40 |
|
||
|
INSERT в откатываемой транзакции
|
|||
|---|---|---|---|
|
#18+
А RAISERROR на что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 17:10:45 |
|
||
|
INSERT в откатываемой транзакции
|
|||
|---|---|---|---|
|
#18+
Не подходит, в виду большой массовой обработки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 17:12:21 |
|
||
|
INSERT в откатываемой транзакции
|
|||
|---|---|---|---|
|
#18+
ЗЫ... через OPENQUERY долго однако.... лучше писать в лог..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 17:19:35 |
|
||
|
INSERT в откатываемой транзакции
|
|||
|---|---|---|---|
|
#18+
в обработчик ошибки insert засунь У меня так begin transaction exec(..) if @@error<>0 goto ErrorHandler ..... insert into ... if @@error<>0 goto ErrorHandler ..... ..... commit transaction return(0) ErrorHandler: rollback transaction insert into tbl_errors (desc, date) values 'bla-bla-bla', GetDate() return (ErrorCode) Токо тебе нужно в таблицу еще что-то засунуть чтоб верхняя транзакция могла однозначно определить ID ошибки, можа @@SPID или System_User ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 17:55:10 |
|
||
|
INSERT в откатываемой транзакции
|
|||
|---|---|---|---|
|
#18+
У меня ошибка возникает в одной процедуре, а откат транзакции делает чуть ли не самая верхняя процедура. Которая при ошибке откатывает транзакцию и переходит на другую запись ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 17:59:33 |
|
||
|
INSERT в откатываемой транзакции
|
|||
|---|---|---|---|
|
#18+
ну дык о том тебе и говорят.... анализируй в каждом тригере после вызова вложенного тригера @@error и таблицуистории ошибок .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 18:23:33 |
|
||
|
INSERT в откатываемой транзакции
|
|||
|---|---|---|---|
|
#18+
Как я понял у тя транзакция начинает верхняя процедура, а остальные токо что-там делают-меняют. Можно конечно, но не очень гибко ... Нижние отдельно от верхней использовать корректно не сможешь. Ваще, любая процедура, меняющая данные более чем в двух таблицах должна начинаться транзакцией. Ну а в твоем случае все просто. Складываешь ошибки в таблицу и анализируй потом их в верхней сколь угодно. Токо используй правило анализируй ошибки процедур 3 уровня на 2, 2-го на 1. Т.е. не надо в процедуре смотреть ошибки произошедшие в процедуре сгенерированные процедурой, которую вызвала процедура, которуую вызвала процедура ..... etc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 20:03:35 |
|
||
|
INSERT в откатываемой транзакции
|
|||
|---|---|---|---|
|
#18+
на сколь ко я понял это все во вложенных тригеррах... самое главное точно идентифицировать таблицу ошибок... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 20:09:29 |
|
||
|
INSERT в откатываемой транзакции
|
|||
|---|---|---|---|
|
#18+
Ты сам-то понял что спросил?!?!?! После этого базу можно выкидывать нахрен!!! Милейший, почитайте книжки про основы клиент-серверных систем (особенно про то, что такое транзакции зачем они нужны и какими свойствами обладают)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2002, 20:27:41 |
|
||
|
INSERT в откатываемой транзакции
|
|||
|---|---|---|---|
|
#18+
Предлагаю следующий вариант: предположим есть SP P_Top(...) вехнего уровня, где начинается транзакция, и процедура Px(...) "нижнего" уровня, которая выбрасывает ERROR. Так вот, в обработчике ошибок в процедура Px(...) в таблицу ошибок делается INSERT и ошибка re-rais-ится. P_Top(...) ловит ошибку и смотрит в таблицу ошибок ДО ТОГО как откатить транзакцию. Потом откатывает транзакцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2002, 01:34:25 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32042307&tid=1821238]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
190ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 228ms |
| total: | 519ms |

| 0 / 0 |
