Welcome to Sign in | Help

Re: Transaction

  •  11-17-2006, 1:44 AM

    Re: Transaction

    ssandu:

    Am patit un fapt interesant.

    BEGIN TRANSACTION
    INSERT INTO Tabela1 ....
    INSERT INTO Tabela2 ...
    COMMIT

    Ai patit un fapt banal. Ai comis o transactie fara ca sa te intereseza daca rezultatul ei e consistent sau nu. Daca verifici @@ERROR, trebuie sa-l verifici dupa fiecare statement. Daca primul INSERT a picat (e.g. unique constraint violation), al doilea INSERT va reseta @@ERROR. 

    Nu e clar din exemplu daca transactia este o subtranzactie intr-o alta tranzactie. Daca nu e, atunci codul e incorect si pentru ca incearca sa faca ROLLBACK dupa ce a facut COMMIT. Daca e, atunci codul risca sa devina incorect la o schimbare minora  (e.g. daca caller-ul nu mai porneste o tranzactie explicita). Normal COMMIT-ul se face pe un branch al IF-ului si ROLLBACK pe celalalt.

    Numai de bine,
    ~Remus


    http://rusanu.com
View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems