Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / COM+ транзакция / 1 сообщений из 1, страница 1 из 1
19.03.2004, 13:28
    #32449177
ils
ils
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COM+ транзакция
У меня вот какой вопрос

Создаю СОМ+ компонент (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
Форумы / Программирование [игнор отключен] [закрыт для гостей] / COM+ транзакция / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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