sql >> Databasteknik >  >> RDS >> Sqlserver

Är T-SQL Stored Procedure Execution "atomic"?

Detta är för SQL Server.

Varje påstående är atomärt, men om du vill att den lagrade proceduren ska vara atomär (eller någon sekvens av påståenden i allmänhet), måste du uttryckligen omge påståendena med

BÖRJA TRANSAKTION
Uttalande ...
Uttalande ...
BEGÄRNA TRANSAKTION

(Det är vanligt att förkorta BEGIN TRAN och END TRAN.)

Naturligtvis finns det många sätt att hamna i låsproblem beroende på vad som händer samtidigt, så du kan behöva en strategi för att hantera misslyckade transaktioner. (En fullständig diskussion av alla omständigheter som kan resultera i låsningar, oavsett hur du konstruerar denna speciella SP, ligger utanför frågans räckvidd.) Men de kommer fortfarande att kunna skickas in på nytt på grund av atomiciteten. Och enligt min erfarenhet kommer du förmodligen att klara dig, utan att veta om dina transaktionsvolymer och andra aktiviteter i databasen. Ursäkta att jag säger det uppenbara.

I motsats till en populär missuppfattning kommer detta att fungera i ditt fall med standardinställningar för transaktionsnivå.



  1. Vad är det korrekta sättet att använda distinct på (Postgres) med SqlAlchemy?

  2. En introduktion till MySQL-distribution med en Ansible-roll

  3. Förklara FOR i orakel

  4. Ersätt unicode-tecken i PostgreSQL