Můžeme použít transakci v uložené proceduře?
Můžeme použít transakci v uložené proceduře?

Video: Můžeme použít transakci v uložené proceduře?

Video: Můžeme použít transakci v uložené proceduře?
Video: Stored Procecure, Transaction processing, Exception handling SQL Server 2024, Duben
Anonim

Li my mít více než jeden SQL příkaz spuštěný v uložené procedury a my chcete vrátit zpět všechny změny provedené některým z příkazů SQL v případě, že došlo k chybě kvůli některému z příkazů SQL, můžeme použít transakci v uložené proceduře.

Spouštějí se uložené procedury v transakci?

Vnořeno uložené procedury jsou popraven v transakce kontextu nejvzdálenějších uložené procedury . Toto je výchozí nastavení. Poskytuje výchozí chování popsané výše. To znamená, že všechny příkazy SQL v a spustit uloženou proceduru jako svobodný transakce blok.

Kromě výše uvedeného můžeme v proceduře použít commit? Obecně, postupy neměl by spáchat . jestli ty spáchat uvnitř uloženého postup , omezujete jeho opětovnou použitelnost, protože volající, který chce změny postup dělá být součástí větší transakce nelze jednoduše zavolat postup přímo.

Pokud jde o toto, můžeme použít transakci ve funkci SQL?

1 odpověď. Proto transakce jsou zbytečné pro sql -server funkcí . Nicméně vy umět změna transakce úroveň izolace, například, můžete použití Nápověda NOLOCK k dosažení "přečtení bez závazku" transakce úroveň izolace a číst nepotvrzená data z jiných transakce.

Můžeme použít vnořené transakce v SQL, pokud ano, jak?

SQL Server opravdu nepodporuje vnořené transakce . Existuje pouze jeden transakce včas. Toto transakce má základní vnořená transakce počítadlo, @@TRANCOUNT. Každý po sobě jdoucí začátek transakce přírůstky a counter po jednom, každý commit transakce sníží o jednu.

Doporučuje: