• User Attivo

    Rollback Transaction...

    Ciao ragazzi, ho una domanda per voi
    vorrei capire una volta per tutte come fare in una stored procedure in sql server 2000 il ROLLBACK TRANSACTION...
    attendo vostre pronte notizie in merito

    grazie forum
    ciao


  • User Attivo

    Ci sono alcuni errori (errori non fatali) nelle query di modifica che non annullano l'operazione eseguita anche se è andata in errore. Ad esempio un inserimento potrebbe essere effettuato anche se andato in errore. Per evitare questo si può utilizzare la variabile globale @@ERROR per verificare la presenza di errori, e, nel caso, richiamare la funzione di rollback che annulla la modifica.

    Esempio:

    
    CREATE PROCEDURE sp_prova
    @id smallint, @nome ntext
    AS
    BEGIN
    INSERT INTO tabella (id, nome) VALUES (@id, @nome)
    IF @@ERROR <> 0 
       BEGIN
          ROLLBACK TRANSACTION
          RETURN
       END
    END
    GO
    
    

  • User Attivo

    Grazie della risposta, ma sai sono parecchio duro in materia

    In allegato trovate un file txt contenente la stored procedure che abbisogna del BEGIN TRANSACTION e ROLLBACK TRANSACTION... potreste dirmi, modificando pure la mia procedura, dove mettereste il ROLLBACK TRANSACTION

    attendo vostre nuove

    grazie
    ciao


  • User Attivo

    Il rollback lo si imposta all'avvenimento di un evento.

    Nell'esempio da me riportato l'avvenimento è @@error <> 0

    Il rollback annulla una transazione. Nel tuo caso non hai specificato né quando né dove inserire il rollback.

    Sii più preciso altrimenti non ti si può aiutare.

    Ciao.


  • User Attivo

    @madai said:

    Il rollback lo si imposta all'avvenimento di un evento.

    Nell'esempio da me riportato l'avvenimento è @@error <> 0

    Il rollback annulla una transazione. Nel tuo caso non hai specificato né quando né dove inserire il rollback.

    Sii più preciso altrimenti non ti si può aiutare.

    Ciao.

    Il rollback andrebbe in tutti i casi in cui cerco di fare un INSERT, ovvero vorrei che vadano a buon fine tutti gli insert che devo effettuare...

    grazie
    ciao


  • User Attivo

    prova ad inserire

    
    IF @@ERROR <> 0 
     BEGIN
       ROLLBACK TRANSACTION
       RETURN
     END
    
    

    prima dell'ultimo END