powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / COM+ транзакция
1 сообщений из 1, страница 1 из 1
COM+ транзакция
    #32449177
ils
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ils
Гость
У меня вот какой вопрос

Создаю СОМ+ компонент (TransTest3.ClassTest3), который стучится к Firebird 1.0. (Конечно если Interbase/Firebird в принципе не поддерживает СОМ+ транзакции, тогда вопрос отпадает сам собой)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
Public Sub MakeOrder()

Dim con As ADODB.Connection

On Error GoTo err_handler

Set contx = GetObjectContext()
Set con = New ADODB.Connection
con.Provider =  "MSDASQL.1 "
con.ConnectionString =  "DSN=test_errors;User Id=sysdba;Password=masterkey" 
con.Open

'''' Два последовательных запроса 

con.Execute  "insert into err_tbl(errors) values('Test String')" 

con.Execute  "delete from test_tbl where id > 2 "


If Not contx Is Nothing Then contx.SetComplete

exit_handler:
  
  If Not (con Is Nothing) Then
    If con.State = adStateOpen Then con.Close
    Set con = Nothing
  End If
  
  Set contx = Nothing
  Exit Sub


err_handler:
 If Not contx Is Nothing Then contx.SetAbort
 Resume exit_handler

End Sub

'''MTSTransationMode - RequiresTransaction, Instancing - MultiUse


Вызываю этот компонент на странице ASP

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<%@ LANGUAGE=VBScript TRANSACTION=Required %>

<%

  set tst=server.createobject( "TransTest3.ClassTest3" )
  tst.MakeOrder
  set tst=nothing
  
  
  Sub OnTransactionCommit
    response.write( "Transaction commited" )
  end sub

Sub OnTransactionAbort
  response.write( "Transaction aborted" )
end sub

%>

В компоненте в запросе "delete from test_tbl where id > 2" id - заведомо несуществующее поле. По логике, на выходе страницы должно быть "Transaction aborted". Так оно и есть. Однако не происходит отката первого запроса "insert into err_tbl(errors) values('Test String')" - изменения фиксируются.
В чем здесь загвоздка?
Зараннее благодарен
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / COM+ транзакция
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]