DbBeginTrans - metoda obiektu PmaAdo
Opis:
Rozpoczyna nową transakcję nad podłączoną bazą danych.
Składnia:
Object DbBeginTrans([String sParams])
Parametry:
sParams | [opcjonalne] (String) Dodatkowe parametry metody DbBeginTrans. Dane są tutaj w formacie KeyVal, na przykład "return:map;".
"return:xxx;" (opcjonalne) - Określa, czy wartość zwrotna metody ma być mapą z większą ilością zwróconych wartości równocześnie ( nowy sposób) lub tylko jedną wartością ( stary sposób).
Jeżeli nie jest ustawione, wtedy zostanie zastosowany stary sposób.
map - Zwraca mapę (obiekt PmMap), która zawiera większą ilość zwróconych wartości równocześnie ( nowy sposób) (np. Result, AffectedRows, ErrorCode, ErrorText). |
---|
Wartość zwrotna:
Nowy sposób: Zwraca obiekt
PmMap z wartościami w następujących pozycjach:
-
"Result":
pusta wartość (metoda niczego nie zwraca)
-
"ErrorCode":
kod liczbowy ewentualnego błędu, gdzie wartość
0 oznacza pomyślne wykonanie metody (bez błędu)
-
"ErrorText":
opis ewentualnego błędu
Stary sposób: Zwraca pusta wartość (metoda niczego nie zwraca).
Notatka:
Nowa transakcja nad podłączoną bazą danych rozpoczyna się przy pomocy metody
DbBeginTrans. Wszystkie następne operacje nad tą bazą danych zostaną później jako jedna całość (transakcja) razem potwierdzone przy pomocy metody
DbCommitTrans lub pominięte przy pomocy metody
DbRollbackTrans. Transakcje muszą być wspierane przez podłączoną bazę danych oraz
providera.
Przykład1:
JavaScriptVBScriptWybierz oraz skopiuj do schowka
var val = oDb.DbBeginTrans();
Dim val
val = oDb.DbBeginTrans()
Przykład2:
Doda nowy rekord do tebeli
table1 oraz
table2 przy pomocy transakcji. Jeżeli doszłoby do błędu podczas dodawania do dowolnej z tabelek, wtedy zostaną pominięte wszystkie operacje od początku transakcji. To znaczy, że zostaną dodane oba rekordy lub żaden. Zawieszanie operacji w obiekcie
PmaAdo można wykrywać przy pomocy właściwości
LastErr.
JavaScriptVBScriptWybierz oraz skopiuj do schowka
var oDb = pMe.Pm("/TestAdoDb");
var nLastErr1, nLastErr2;
if (0 == oDb.DbBeginTrans("return:map;").ErrorCode)
{
nLastErr1 = oDb.DbExecute("", "INSERT table1 (name, value) VALUES ('pi', 3.14)", "return:map;").ErrorCode;
nLastErr2 = oDb.DbExecute("", "INSERT table2 (name, value) VALUES ('pi', 3.14)", "return:map;").ErrorCode;
if (0 == nLastErr1 && 0 == nLastErr2)
{
oDb.DbCommitTrans();
}
else
{
Pm.Debug(oDb.LastTextErr);
oDb.DbRollbackTrans();
}
}
Dim oDb, nLastErr1, nLastErr2
Set oDb = pMe.Pm("/TestAdoDb")
If 0 = oDb.DbBeginTrans("return:map;").ErrorCode Then
nLastErr1 = oDb.DbExecute("", "INSERT table1 (name, value) VALUES ('pi', 3.14)", "return:map;").ErrorCode
nLastErr2 = oDb.DbExecute("", "INSERT table2 (name, value) VALUES ('pi', 3.14)", "return:map;").ErrorCode
If 0 = nLastErr1 And 0 = nLastErr2 Then
oDb.DbCommitTrans
Else
Pm.Debug oDb.LastTextErr
oDb.DbRollbackTrans
End If
End If