Postgres pro standard dokumentáció 9

A SET TRANSACTION parancs határozza meg az aktuális tranzakció jellemzőit. A későbbi tranzakciók esetében ez nem érinti. A SET SESSION CHARACTERISTICS beállítja az alapértelmezett művelet jellemzőit a későbbi tranzakciókhoz a munkameneten belül. Az alapértelmezett jellemzők az egyes tranzakciók esetében a SET TRANSACTION parancs segítségével felülírhatók.

Tranzakció-elkülönítés, tranzakció-hozzáférési mód (csak olvasható / írható vagy csak olvasható), valamint a halasztás megengedhetősége a tranzakció jellemzőivel függ össze. Ezen kívül kiválaszthatja a pillanatfelvételt, de csak az aktuális tranzakcióhoz, nem az alapértelmezett munkamenethez.

A tranzakcióelkülönítési szint határozza meg, hogy az ügylet milyen adatokat jelenít meg, amikor más tranzakciók párhuzamosan futnak vele:

Az üzemeltető csak azokat a sorokat látja, amelyeket a végrehajtás megkezdése előtt rögzítettek. Ez a szint alapértelmezés szerint be van állítva. REPEATABLE READ

Az aktuális tranzakció minden üzemeltetője csak azokat a sorokat látja el, amelyeket az első tranzakcióban végrehajtott mintavétel vagy adatmódosítás kérése előtt vittek el. serializable

Az aktuális tranzakció minden üzemeltetője csak azokat a sorokat látja el, amelyeket az első tranzakcióban végrehajtott mintavétel vagy adatmódosítás kérése előtt vittek el. Ha kivetése egyidejű olvasási és írási műveletek serializable ügylet vezethet helyzetben lehetetlen szekvenciális végrehajtás (amikor az egyik ügyletet hajt végre egy másik), nem lesz visszafordítani az ügyletek egyike serialization_failure hiba (hiba serialization).

Az SQL szabványban egy másik szint definiálódik, READ UNCOMMITTED. A Postgres Pro programban a READ UNCOMMITTED szintet READ COMMITED-nak tekintik.

A DEFERRABLE tulajdonság csak akkor érinti, ha a tranzakció a SERIALIZABLE és READ ONLY módokban is található. Ha mindhárom tulajdonság egy tranzakcióra van állítva, a tranzakció lezárható az adatok pillanatképének első alkalommal történő lekérdezésével, majd ezután elvégezhető a SERIALIZÁLÁS üzemmódban szokásos további erőfeszítések nélkül. és annak veszélye nélkül, hogy nem szerializálták vagy szenvedtek tőle. Ez az üzemmód alkalmas hosszú műveletekre, például épületjelentésekre vagy biztonsági mentésre.

Ha a SET TRANSACTION parancs nem haladja meg a START TRANSACTION vagy BEGIN parancsot. figyelmeztetést ad, és nem tesz semmit.

A SET TRANSACTION nélkül meg lehet adni a szükséges tranzakciós módokat a BEGIN vagy START TRANSACTION operátorokban. A SET TRANSACTION SNAPSHOT esetében azonban ez a lehetőség nem biztosított.

Az alapértelmezett munkamenet tranzakciós módjait a default_transaction_isolation konfigurációs változók is megadhatják. default_transaction_read_only és default_transaction_deferrable. (A gyakorlatban Munkamenethez JELLEMZŐI - ez csak még bővebb alternatív változtatni ezeket a változókat SET parancsot.) Ez azt jelenti, hogy az értéke az alapértelmezett változókat lehet beállítani a konfigurációs fájl az ALTER DATABASE parancsot, stb További információért lásd .. 20. fejezet.

Új tranzakció indításához a meglévő tranzakció adatainak pillanatképével először exportálni kell az első tranzakcióból. A képazonosító például:

Ezután ezt az azonosítót át kell adni a SET TRANSACTION SNAPSHOT parancsnak az új tranzakció elején:

kompatibilitás

Ezek a parancsok az SQL szabványban vannak meghatározva. kivéve a DEFERRABLE tranzakciós módot és a SET TRANSACTION SNAPSHOT formát. amelyek a Postgres Pro kiterjesztései.

A szabványban az alapértelmezett elszigetelési szint SERIALIZABLE. A Postgres Pro programban az alapértelmezett szint általában READ COMMITTED. de megváltoztathatja a fentiek szerint.

Az SQL szabványban a tranzakció másik jellemzője, amelyet nem állíthat be ezek a parancsok: a diagnosztikai terület mérete. Ez a beágyazott SQL speciális koncepciója, ezért nem implementálódik a Postgres Pro kiszolgálón.

Az SQL szabvány előírja, hogy a soros tranzakciós módokat vesszőkkel elválasztják, de történelmi okokból a Postgres Pro lehetővé teszi a vesszők kihagyását.