Possiamo utilizzare la transazione nella stored procedure?
Possiamo utilizzare la transazione nella stored procedure?

Video: Possiamo utilizzare la transazione nella stored procedure?

Video: Possiamo utilizzare la transazione nella stored procedure?
Video: Database development unit test with tSQLt 2024, Aprile
Anonim

Se noi avere più di un'istruzione SQL in esecuzione nel procedura memorizzata e noi desidera ripristinare tutte le modifiche apportate da una qualsiasi delle istruzioni SQL nel caso in cui si sia verificato un errore a causa di una delle istruzioni SQL, possiamo usare la transazione nella procedura memorizzata.

Proprio così, le stored procedure vengono eseguite in una transazione?

Nidificato procedura di archiviazione sono eseguito nel transazione contesto dell'estremo procedura memorizzata . Questa è l'impostazione predefinita. Fornisce il comportamento predefinito descritto sopra. Cioè, tutte le istruzioni SQL in a stored procedure eseguire da single transazione bloccare.

Oltre a sopra, possiamo usare il commit nella procedura? Generalmente, procedure non dovrebbe commettere . Se tu commettere all'interno di un immagazzinato procedura , stai limitando la sua riutilizzabilità perché un chiamante che vuole le modifiche lo procedura fa parte di una transazione più ampia non può semplicemente chiamare il procedura direttamente.

A questo proposito, possiamo usare la transazione nella funzione SQL?

1 risposta. Ecco perchè transazioni non sono necessarie per sql -server funzioni . Tuttavia, tu Potere modificare transazione livello di isolamento, ad esempio, potresti utilizzo Suggerimento NOLOCK per raggiungere "read uncommitted" transazione livello di isolamento e leggere i dati non impegnati da altri transazioni.

Possiamo usare le transazioni nidificate in SQL se sì, allora come?

SQL Il server non supporta davvero transazioni annidate . Ce n'è solo uno transazione Al tempo. Questo transazione ha una base transazione annidata contatore, @@TRANCOUNT. Ogni inizio consecutivo transazione incrementi il contatore di uno, ogni commit transazione lo riduce di uno.

Consigliato: