Putem folosi tranzacția în procedura stocată?
Putem folosi tranzacția în procedura stocată?

Video: Putem folosi tranzacția în procedura stocată?

Video: Putem folosi tranzacția în procedura stocată?
Video: Stored Procecure, Transaction processing, Exception handling SQL Server 2024, Aprilie
Anonim

Dacă noi au mai multe instrucțiuni SQL în execuție în procedură stocată și noi doriți să anulați orice modificare făcută de oricare dintre instrucțiunile SQL în cazul în care a apărut o eroare din cauza uneia dintre instrucțiunile SQL, putem folosi tranzacția în procedura stocată.

Chiar așa, procedurile stocate rulează într-o tranzacție?

Cuibărit proceduri stocate sunt executat în tranzacţie contextul celui mai exterior procedură stocată . Aceasta este setarea implicită. Oferă comportamentul implicit descris mai sus. Adică toate instrucțiunile SQL din a se execută procedura stocată ca un singur tranzacţie bloc.

În afară de mai sus, putem folosi commit în procedură? În general, proceduri nu ar trebui comite . daca tu comite în interiorul unui depozitat procedură , limitați reutilizarea acestuia deoarece un apelant care dorește modificările procedură face parte dintr-o tranzacție mai mare nu poate apela pur și simplu procedură direct.

În acest sens, putem folosi tranzacția în funcția SQL?

1 Răspuns. De aceea tranzactii sunt inutile pentru sql -Server funcții . Totuși, tu poate sa Schimbare tranzacţie nivelul de izolare, de exemplu, este posibil utilizare Sugestie NOLOCK pentru a ajunge la „citește neangajat” tranzacţie nivel de izolare și citiți date necommitate de la alții tranzactii.

Putem folosi tranzacții imbricate în SQL dacă da, atunci cum?

SQL Serverul nu suportă cu adevărat tranzacții imbricate . Există doar unul tranzacţie la un moment dat. Aceasta tranzacţie are o bază tranzacție imbricată contor, @@TRANCOUNT. Fiecare început consecutiv tranzacţie incremente cel contra câte unul, fiecare commit tranzacţie o reduce cu unu.

Recomandat: