Promotic
WikipediaLinkedInYoutubeTwitterFacebook

DbBeginTrans - metoda objektu PmAdo

Popis:
Začíná novou transakci nad připojenou databázi.
Syntaxe:
DbBeginTrans([sParams As String]) As Object
Volání:
oDb.DbBeginTrans(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 (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 případné 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:
Metodou DbBeginTrans začíná nová transakce nad připojenou databází. 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 podporována připojenou databází a providerem.
Příklad:
Přidání nové věty do tabulek table1 a table2 za pomocí transakce. Pokud dojde k selhání přidávání do některé z tabulek, pak se zruší všechny operace od počátku transakce. To znamená, že se přidají buď obě věty nebo žádná. Detekovat selhání operace v objektu PmAdo lze pomocí vlastnosti LastErr.
VBScriptVyber a zkopíruj do schránky

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
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice