DbBeginTrans - metoda objektu PmaAdo
Popis:
Začíná novou transakci nad připojenou databázi.
Syntaxe:
Object DbBeginTrans([String sParams])
Parametry:
sParams | [nepovinné] (String) Dodatečné parametry metody DbBeginTrans. Údaje jsou zde ve formátu KeyVal, například "return:map;".
"return:xxx;" (nepovinné) - Určuje, zda vrácená hodnota metody má být mapa s více vrácenými hodnotami současně ( nový způsob) nebo jedna hodnota ( starý způsob).
Pokud není nastaveno, pak se jedná o starý způsob.
map - Vrací mapu (objekt PmMap), která obsahuje více vrácených hodnot současně ( nový způsob) (např. Result, AffectedRows, ErrorCode, ErrorText). |
---|
Vrácená hodnota:
Nový způsob: Vrací objekt
PmMap s hodnotami v následujících položkách:
-
"Result":
prázdná hodnota (metoda nic nevrací)
-
"ErrorCode":
číselný kód chyby, kde hodnota
0 znamená úspěšné vykonání metody bez chyby
-
"ErrorText":
text případné chyby
Starý způsob: Vrací prázdná hodnota (metoda nic nevrací).
Poznámka:
Nová transakce nad připojenou databází začíná metodou
DbBeginTrans. Všechny následné operace nad touto databází budou pak jako jeden celek (transakce) najednou potvrzeny metodou
DbCommitTrans nebo zrušeny metodou
DbRollbackTrans. Transakce musí být podporované připojenou databází a
providerem.
Příklad1:
JavaScriptVBScriptVyber a zkopíruj do schránky
var val = oDb.DbBeginTrans();
Dim val
val = oDb.DbBeginTrans()
Příklad2:
Přidá nový záznam do tabulek
table1 a
table2 pomocí transakce.
Pokud dojde k selhání přidávání do některé z tabulek, pak se zruší všechny operace od začátku transakce. To znamená, že se přidají buď oba záznamy nebo žádný.
Detekovat selhání operace v objektu
PmaAdo lze pomocí vlastnosti
LastErr.
JavaScriptVBScriptVyber a zkopíruj do schránky
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