|
"Серверный" откат клиентской транзакции
|
|||
---|---|---|---|
#18+
Есть приложение на С#, использующее ADO.NET. Внутри одного из методов приложения делаю следующее: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
То есть, если происходит ошибка, то транзакция откатывается, если всё в порядке - подтверждается. Используется экземпляр класса System.Data.SqlClient.SqlTransaction. Всё вроде хорошо работает, но запрос вставляет данные в некую таблицу, на который висит триггер, проверяющий целостность. Если вставляемые данные нарушают её, то триггер откатывает вставку (в теле триггера есть команда rollback tran). В итоге после срабатывания триггера, когда управление переходит на оператор commit или rollback внутри программы, то происходит исключение, так как транзакция уже отменена триггером. Вопрос: можно ли как-то узнать, что транзакция уже отменена (или подтверждена) на сервере и её не следует откатывать вновь в приложении? Списибо. ПС: сервер: MS SQL 2000, триггер менять нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2003, 14:55 |
|
"Серверный" откат клиентской транзакции
|
|||
---|---|---|---|
#18+
Есть в MS SQL Server переменная такая, @@TRANCCOUNT, кажется, называется. Можно ею воспользоваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2003, 15:10 |
|
"Серверный" откат клиентской транзакции
|
|||
---|---|---|---|
#18+
а если так? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2003, 17:19 |
|
|
start [/forum/topic.php?fid=17&fpage=135&tid=1354372]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
58ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 235ms |
total: | 394ms |
0 / 0 |