Kan vi använda transaktion i lagrad procedur?
Kan vi använda transaktion i lagrad procedur?

Video: Kan vi använda transaktion i lagrad procedur?

Video: Kan vi använda transaktion i lagrad procedur?
Video: Stored Procecure, Transaction processing, Exception handling SQL Server 2024, November
Anonim

Om vi har mer än en SQL-sats som körs i lagrad procedur och vi vill återställa alla ändringar som gjorts av någon av SQL-satserna om ett fel inträffade på grund av en av SQL-satserna, vi kan använda transaktion i lagrad procedur.

Bara så, körs lagrade procedurer i en transaktion?

Kapslad lagrade procedurer är avrättade i transaktion det yttersta sammanhanget lagrad procedur . Detta är standardinställningen. Tillhandahåller standardbeteendet som beskrivs ovan. Det vill säga alla SQL-satser i en lagrad procedur exekvera som singel transaktion blockera.

Förutom ovan, kan vi använda commit i förfarandet? I allmänhet, förfaranden borde inte begå . Om du begå inuti en förvarad procedur , begränsar du dess återanvändbarhet eftersom en uppringare som vill ha ändringarna procedur gör att vara en del av en större transaktion kan inte bara ringa procedur direkt.

Angående detta, kan vi använda transaktion i SQL-funktion?

1 Svar. Det är därför transaktioner är onödiga för sql -server funktioner . Men du burk förändra transaktion isoleringsnivå kan du till exempel använda sig av NOLOCK-tips för att nå "läs oengagerad" transaktion isoleringsnivå och läs oengagerad data från andra transaktioner.

Kan vi använda kapslade transaktioner i SQL om ja, hur då?

SQL Servern stöder inte riktigt kapslade transaktioner . Det finns bara en transaktion vid en tid. Den här transaktion har en grundläggande kapslad transaktion räknare, @@TRANCOUNT. Varje följd börjar transaktion steg de mot efter en, varje commit transaktion minskar den med en.

Rekommenderad: