Ho visto l'utilizzo delle transazioni in alcuni casi, ma mai veramente capito in quali situazioni dovrebbero essere utilizzati. Come e quando le transazioni dovrebbero essere utilizzate (iniziare la dichiarazione della transazione)? Ho letto che Microsoft non suggerisce di utilizzare le dichiarazioni di transazione (commit, rollback) all'interno di un trigger e stored procedure.Come utilizzare le transazioni (iniziare la transazione, effettuare il commit della transazione)?
risposta
Le transazioni possono essere utilizzate insieme alla gestione degli errori nelle stored procedure o negli script SQL quando si inseriscono o si manipolano i dati per assicurarsi che tutto sia coerente.
Ad esempio, se si dispone di una stored procedure che inserisce record in una tabella padre e una tabella figlio, è necessario assicurarsi che il record padre venga inserito per primo; se fallisce, puoi eseguire il rollback delle modifiche in modo da non avere un record figlio orfano.
Erland Sommarskog ha un great article su come utilizzare la gestione degli errori in SQL Server.
Infine, dove Microsoft ha suggerito di non utilizzare le transazioni nelle stored procedure? Penserei che le stored procedure sarebbero un posto ideale per usarle.
Se stavo trasferendo moey da un conto ad un altro, vorrei che sia al 100% o 100% di successo venga meno
UPDATE PersonalAccount SET Balance = Balance - 100 WHERE Username = 'gbn'
--what if the server caught fire here?
UPDATE SavingsAccount SET Balance = Balance + 100 WHERE Username = 'gbn'
Quanto a ciò che si legge, i rifiuti completo eccetto alcuna necessità di utilizzare INIZIA TRAN in un trigger.
Un esempio da "Nested stored procedures containing TRY CATCH ROLLBACK pattern?"
Grazie, forse la mia dichiarazione circa era troppo dritto: c'è un avviso che l'utilizzo di commit o rollback all'interno di una procedura o trigger può causare errori: http://msdn.microsoft.com /en-us/library/ms187844(v=SQL.100).aspx – juur