Бд 2 (befejezetlen) 10 oktas

De jobb, ha nem indítanak, az adatfeldolgozás logikáját végrehajtva az eljárásokon keresztül.

Tranzakciók és ütközések megosztása

A "Tárolt eljárások" bekezdés elején egy "többemeletes" asztali frissítésekről szóló példát adtak meg, amelyek egy elvi (oszthatatlan) műveletet a felhasználó szempontjából szemléltetnek. A műveletet végrehajtó SQL parancsok sorrendje nem szakadhat meg középen - ez hibás adatállapothoz vezet.

Egy műveletblokkot, amelyet vagy mindenkinek végre kell hajtania, vagy egyikük sem hajtja végre, tranzakciónak nevezik. Ha a tranzakció során végrehajtott művelet nem hajtható végre, vagy hibaüzenetet eredményez, törölnie kell a tranzakció kezdetétől bekövetkezett összes adatmódosítást, és vissza kell állítania az adatbázist a tranzakció kezdetekor fennálló állapotba. A változások törlését rollback-nak nevezzük. Ha minden tranzakció sikeres volt a tranzakció során hiba nélkül, a tranzakció elkötelezett (commit), amely után már nem törölheti a változtatásokat.

Tranzakciók végrehajtása során a DBMS betartja a parancsok feldolgozására vonatkozó szabályokat, amelyeket ACID követelmények formájában formáztak (a követelmények kezdeti betűinek megfelelően):

Atomicitás - az ügyletben végrehajtott változtatások teljesülnek, vagy egyáltalán nem kerülnek végrehajtásra.

Következetesség - az adatbázisban lévő adatoknak az ügylet előtt és után következetes állapotban kell lenniük; Az ügyleten belül ideiglenes következetlenség lehetséges. A konzisztencia az adatok logikai állapotának való megfelelést jelenti. Például rendelési táblázatok (száma (PK), dátum, összegösszeg) és tartalmi megrendelések (rendelési szám (FK), termékkód (FK), ár, mennyiség). Az új megbízás kiadásának teljes folyamata tranzakció: először új sor kerül a Megrendelésbe. ezzel a fizetési összeggel = 0. Ezután az árukat beírják - több sor kerül a megrendelések tartalmára. Az utolsó lépés a fizetési összeg kiszámítása. a megrendelés tartalma alapján. Ebben a példában az adatok konzisztenciája az egyenlet SumsCare = = Ár * A megrendelésbe bevitt áruk mennyisége. Míg a megrendeléshez hozzáadnak árut, a fizetési összeg mező = 0 - az adatok ideiglenes következetlensége.

Az elkülönítés - az egy tranzakció által végrehajtott módosítások nem függhetnek egy másik tranzakció által végrehajtott változtatásoktól. Ez azt jelenti, hogy minden ügylet munkája úgy történhet, mintha ez a tranzakció kizárólag az adatbázisban működne. Azt kell, hogy megtalálja azokat a változásokat, amelyek tette magát (és valójában ugyanabban az időben, egyéb tranzakciók frissítheti ugyanazokat az adatokat, de az adatbázis, mint „manipulálták az” A táblázatok adatai, hogy a tranzakció csak látni a változást).

Tartósság - a tranzakció rögzítése után az elvégzett módosítások az adatbázisban tárolódnak, és semmi sem tudja visszaadni az adatbázist az ügylet kezdetét megelőző állapotba.

A laboratóriumban a felhasználó "elemi" akcióit tranzakciók formájában kell formalizálni. Időtartamára a tranzakció lehet osztani a rövid (posledovatelnostSQL végrehajtott parancsok egymás után haladéktalanul - a sorrendben mikroszekundum a másodperc) idlinnye vagy üzleti tranzakció 1 (társított várakozás egy felhasználói beavatkozás, mint például hozzá egy terméket rendelni - is egy percig, óráig tart, és megszakadhat kommunikációs hiba miatt).

Rövid tranzakciók esetén:

a Firebird / Interbase-ban nincs semmi különös, ami nem szükséges - minden tárolt eljárás automatikusan tranzakció.

BEGIN TRAN NameTransactions

COMMIT TRAN NameTransactions