Kan vi bruke transaksjon i lagret prosedyre?
Kan vi bruke transaksjon i lagret prosedyre?

Video: Kan vi bruke transaksjon i lagret prosedyre?

Video: Kan vi bruke transaksjon i lagret prosedyre?
Video: Stored Procecure, Transaction processing, Exception handling SQL Server 2024, November
Anonim

Hvis vi har mer enn én SQL-setning i kjøring i lagret prosedyre og vi ønsker å tilbakestille eventuelle endringer som er gjort av en av SQL-setningene i tilfelle det oppstår en feil på grunn av en av SQL-setningene, vi kan bruke transaksjon i lagret prosedyre.

Bare så, kjører lagrede prosedyrer i en transaksjon?

Nestet lagrede prosedyrer er henrettet i transaksjon konteksten til de ytterste lagret prosedyre . Dette er standardinnstillingen. Gir standardoppførselen beskrevet ovenfor. Det vil si alle SQL-setninger i en lagret prosedyre utføres som singel transaksjon blokkere.

Foruten ovenfor, kan vi bruke commit i prosedyren? Generelt, prosedyrer burde ikke begå . Hvis du begå inne i en lagret fremgangsmåte , begrenser du gjenbrukbarheten fordi en oppringer som ønsker endringene fremgangsmåte gjør å være en del av en større transaksjon kan ikke bare ringe fremgangsmåte direkte.

Angående dette, kan vi bruke transaksjon i SQL-funksjon?

1 svar. Derfor transaksjoner er unødvendig for sql -server funksjoner . Men du kan endring transaksjon isolasjonsnivå, for eksempel, kan du bruk NOLOCK hint for å nå "les uforpliktet" transaksjon isolasjonsnivå og lese uforpliktende data fra andre transaksjoner.

Kan vi bruke nestede transaksjoner i SQL hvis ja, hvordan?

SQL Serveren støtter egentlig ikke nestede transaksjoner . Det er bare en transaksjon om gangen. Denne transaksjon har en grunnleggende nestet transaksjon teller, @@TRANCOUNT. Hver påfølgende begynner transaksjon trinn de mot for én, hver forpliktelse transaksjon reduserer den med én.

Anbefalt: