Kan vi bruge transaktion i lagret procedure?
Kan vi bruge transaktion i lagret procedure?

Video: Kan vi bruge transaktion i lagret procedure?

Video: Kan vi bruge transaktion i lagret procedure?
Video: Реальные примеры Spring AOP внутри самого Spring и за его пределами [Путешествие по Spring AOP — Час 2024, April
Anonim

Hvis vi har mere end én SQL-sætning i eksekvering i gemt procedure og vi ønsker at rulle tilbage eventuelle ændringer udført af en af SQL-sætningerne, hvis der opstod en fejl på grund af en af SQL-sætningerne, vi kan bruge transaktion i lagret procedure.

Bare så, kører lagrede procedurer i en transaktion?

Indlejret lagrede procedurer er henrettet i transaktion konteksten af det yderste gemt procedure . Dette er standardindstillingen. Giver standardadfærden beskrevet ovenfor. Det vil sige alle SQL-sætninger i en lagret procedure udføres som single transaktion blok.

Udover ovenstående, kan vi bruge commit i proceduren? Generelt, procedurer burde ikke begå . hvis du begå inde i et opbevaret procedure , du begrænser dens genbrugelighed, fordi en opkalder, der ønsker ændringerne procedure gør at være en del af en større transaktion, kan ikke blot ringe til procedure direkte.

Med hensyn til dette, kan vi bruge transaktion i SQL-funktion?

1 svar. Derfor transaktioner er unødvendige for sql -server funktioner . Dog du kan lave om transaktion isolationsniveau kan du f.eks brug NOLOCK-tip for at nå "læs uforpligtet" transaktion isolationsniveau og læse uforpligtende data fra andre transaktioner.

Kan vi bruge indlejrede transaktioner i SQL, hvis ja, hvordan?

SQL Serveren understøtter ikke rigtig indlejrede transaktioner . Der er kun én transaktion på et tidspunkt. Denne transaktion har en grundlæggende indlejret transaktion tæller, @@TRANCOUNT. Hver fortløbende begynder transaktion stigninger det kontra efter én, hver forpligter sig transaktion reducerer det med én.

Anbefalede: