Dela via


Transaktioner (MFC-dataåtkomst)

Konceptet med en transaktion utvecklades för att hantera fall där databasens resulterande tillstånd beror på den totala framgången för en serie åtgärder. Detta kan bero på att efterföljande åtgärder kan ändra resultatet av tidigare åtgärder. I sådana fall kan det resulterande tillståndet vara obestämt om någon åtgärd misslyckas.

För att lösa det här problemet grupperar transaktioner en serie åtgärder på ett sådant sätt att slutresultatets integritet kan garanteras. Antingen måste alla åtgärder lyckas och sedan bekräftas (skrivas till databasen) eller misslyckas hela transaktionen. Annulleringen av transaktionen kallas för återställning. Återkallande möjliggör en återställning från ändringarna och återför databasen till förtransaktionstillståndet.

Om du till exempel överför pengar från konto A till konto B i en automatiserad banktransaktion måste både uttag från A och insättningen till B lyckas bearbeta pengarna korrekt, annars måste hela transaktionen misslyckas.

En transaktion måste ha ACID-egenskaper som står för följande:

  • Atomicitet En transaktion är en atomisk arbetsenhet och körs exakt en gång. antingen är allt arbete gjort eller inget av det.

  • Konsistens En transaktion bevarar datakonsekvensen och omvandlar ett konsekvent datatillstånd till ett annat konsekvent datatillstånd. Data som är bundna av en transaktion måste bevaras semantiskt.

  • Isolering En transaktion är en isoleringsenhet och var och en sker separat och oberoende av samtidiga transaktioner. En transaktion bör aldrig se de mellanliggande stegen i en annan transaktion.

  • Hållbarhet En transaktion är en återställningsenhet. Om en transaktion lyckas kvarstår uppdateringarna, även om systemet kraschar eller stängs av. Om en transaktion misslyckas förblir systemet i tillståndet innan transaktionen genomförs.

Du kan stödja transaktioner i OLE DB (se Stödtransaktioner i OLE DB) eller ODBC (se Transaktion (ODBC)).

En distribuerad transaktion är en transaktion som uppdaterar distribuerade data, dvs. data på fler än ett datorsystem i nätverket. Om du vill stödja transaktioner över ett distribuerat system bör du använda ADO.NET i stället för OLE DB-transaktionsstöd.

Se även

Programmering av dataåtkomst (MFC/ATL)