ПредишенСледващото

SET СДЕЛКИ команда определя характеристиките на текущата транзакция. това не оказва влияние върху последващото сделката. Насроченото заседание ХАРАКТЕРИСТИКИ определя характеристиките по подразбиране по сделките за последващи сделки на сесията. характеристики по подразбиране след това могат да бъдат заменени за отделна сделка SET СДЕЛКИ команда.

Характеристиките на трансакцията се отнася до нивото на сделка изолация, режимът на сделка за достъп (четене / запис или само за четене) и допустимостта на неговото отлагане. В допълнение към тези, можете да изберете снимката, но само за текущата сделката, а не за сесия по подразбиране.

транзакция ниво на изолация определя какви данни може да видите на сделката, когато тя се извършва паралелно с други сделки:

Операторът вижда само редовете, които са били определени преди началото на неговото изпълнение. Това е стандартното ниво. при повторно четене

Всички отчети за текущата сделката могат да виждат само редовете, които са били записани преди първото искане за проба или данни промени, направени в тази сделка. Serializable

Всички отчети за текущата сделката могат да виждат само редовете, които са били записани преди първото искане за проба или данни промени, направени в тази сделка. Ако налагането на едновременни четат и пишат операции Serializable сделка може да доведе до ситуация, не е възможно с последователно изпълнение (когато една сделка се извършва за друго), там ще се отвали една от сделките serialization_failure грешка (недостатъчност сериализация) на.

Стандартната SQL определено друго ниво, ПРОЧЕТЕТЕ са поети. В Postgres Pro ниво READ неангажираните се третира като READ ангажименти.

DEFERRABLE имот засяга само ако сделката е също Serializable и само за четене режими. След установяването на сделката, всички тези три качества, сделката може да бъде блокиран от първия път, за да видите общ преглед на данните, а след това може да стане без допълнителни усилия са общи за Serializable режим. и без риск от катастрофа сериализация или страдат от нея. Този режим е подходящ за дългосрочни операции, като например да се изгради доклади или архивиране.

Ако командата SET сделката не се предшества от START сделка или да започне. тя издава предупреждение и нищо друго прави.

Без SET СДЕЛКИ можете да направите чрез създаване на необходимите rezhimy_tranzaktsii оператори в началото или в START сделката. Но за СДЕЛКИ общия преглед на SET не е предвидена такава възможност.

Режим на сделка за сесия по подразбиране, можете да зададете в променливите на конфигурация default_transaction_isolation. default_transaction_read_only и default_transaction_deferrable. (На практика насроченото заседание ХАРАКТЕРИСТИКИ - това е просто по-многословно алтернатива за промяна на тези променливи SET команда.) Това означава, че стойността на променливите по подразбиране може да се зададе в конфигурационния файл, използвайки базата данни на командата ALTER, и т.н. За повече информация, вижте .. глава 20.

За да започнете нова сделка с данните на изображението, която вече е получила сегашната сделка, тя трябва първо да бъдат изнесени от първата сделка. Това ще генерира идентификатор на картина, като например:

След това, той е необходим, за да прехвърлите команда SET СДЕЛКИ SNAPSHOT в началото на нова сделка:

съвместимост

Тези команди са определени в стандарта SQL. с изключение на режима на сделките и форми DEFERRABLE SET СДЕЛКИ снимка. които са продължения на Postgres Pro.

Стандартното ниво на изолация по подразбиране е Serializable. В Postgres ниво Pro подразбиране обикновено се счита за извършено ПРОЧЕТЕТЕ. но може да се променя, както е описано по-горе.

В стандартната SQL, има друга характеристика на сделката, които не могат да бъдат определени от тези команди: размерът на зоната за диагностика. Тази конкретна концепция за вграден SQL, така че сървърът Postgres Pro то не се изпълнява.

Standard SQL изисква последователни rezhimy_tranzaktsy разделени със запетаи, но поради исторически причини Postgres Pro ви позволява да пропуснете запетаите.

Подкрепете проекта - споделете линка, благодаря!