sql >> Databáze >  >> RDS >> Sqlserver

Je provádění uložené procedury T-SQL „atomové“?

Toto je pro SQL Server.

Každý příkaz je atomický, ale pokud chcete, aby uložená procedura byla atomická (nebo obecně jakákoli sekvence příkazů), musíte příkazy explicitně obklopit

ZAČÁTEK TRANSAKCI
Prohlášení...
Prohlášení...
POTVRDIT TRANSAKCI

(Je běžné používat zkráceně BEGIN TRAN a END TRAN.)

Samozřejmě existuje mnoho způsobů, jak se dostat do problémů se zámkem v závislosti na tom, co se děje ve stejnou dobu, takže možná budete potřebovat strategii pro řešení neúspěšných transakcí. (Úplná diskuse o všech okolnostech, které by mohly vést k uzamčení, bez ohledu na to, jak si vymyslíte tento konkrétní SP, je nad rámec této otázky.) Stále je však bude možné znovu odeslat kvůli atomičnosti. A podle mých zkušeností budete pravděpodobně v pořádku, aniž byste věděli o objemech transakcí a dalších aktivitách v databázi. Promiňte, že uvádím to, co je zřejmé.

Na rozdíl od populární mylné představy to bude ve vašem případě fungovat s výchozím nastavením úrovně transakce.



  1. Dokáže Laravel zvládnout aplikace s vysokou návštěvností?

  2. Kritická sekce PHP/MySQL

  3. SQL dotaz pro extrakci jedinečných záznamů

  4. Příkazy MySQL INSERT nebo REPLACE