Results 1 to 7 of 7

Thread: transactionlevels en isolationlevels

  1. #1
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747

    transactionlevels en isolationlevels

    als ik een isc_tpb_read_committed meegeef als parameter in een transaction met als tranactionlevel caNone, wordt de readcommit dan wel uitgevoerd?
    Delphi is great. Lazarus is more powerfull

  2. #2
    Wat bedoel je met "uitgevoerd" ??
    (en caNone is niet een tranactionlevel maar een action)

    Read committed is geen transaction actie en wordt ook helemaal niet "uitgevoerd".
    Het is een isolation level en geeft aan wat jij wel en niet kan zien binnen die transactie.

    READ COMMITTED: A transaction sees only data committed before the statement has been executed.
    https://firebirdsql.org/manual/isql-transactions.html

    Let overigens op dat verschillende componenten de parameters verschillende doorgegeven moeten worden.
    Ik moet bijvoorbeeld bij IBX (IBExpress) dit opgeven als read_committed en niet als isc_tpb_read_committed.

  3. #3
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    Dus als ik een query uitvoer en in mijn transactioncomponent staat bij mijn params 'isc_tpb_read_committed' maar de action staat op caNone wordt er toch een commit uitgevoerd? Of is dat alleen op niveau van de database zelf?
    Delphi is great. Lazarus is more powerfull

  4. #4
    Nee.
    De isc_tpb_read_committed zorgt er alleen voor dat jij WEL gegevens kan zien uit een andere transactie die reeds committed zijn.
    The READ COMMITTED isolation level allows all data changes that other transactions have committed since it started to be seen immediately by the uncommitted current transaction. Uncommitted changes are not visible to a READ COMMITTED transaction.
    Je hebt namelijk ook andere isolation levels dat je GEEN committed data ziet van andere transacties. Dan heb je een soort snapshot van de database op het moment dat je de transactie begint. (vandaar de naam met SNAPSHOT in de andere isolation levels.)

    De caNone zou ervoor zorgen dat je inderdaad geen default action gedaan wordt. Dat betekend echter wel dat er een Rollback gedaan wordt bij de EndTransaction of bij de Transaction.Free of bij de Connection.Close. Er mag namelijk nooit een transaction "blijven hangen". Waarom er in Lazarus een caNone is begrijp ik niet helemaal. Bij Delphi is er een DefaultAction en daar kun je alleen kiezen voor de RollBack(Retaining) en Commit(Retaining).

    Dus de door jou genoemde isc_tpb_read_committed en caNone voor Action staan helemaal los van elkaar.

    (nog wat extra leesvoer https://firebirdsql.org/file/documen...tatements.html)

  5. #5
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    oke. Bedankt voor de uitleg. Dan is het een beetje verwarrend voor een beginner als hij met SQLdb gaat werken.
    Delphi is great. Lazarus is more powerfull

  6. #6
    Ja, voor een beginner is het het makkelijkste om de Action op caRollback te zetten (zodat er bij sluiten niet per ongeluk gecommit wordt (tenzij je dit anders wilt)).

    En dan bij de options van de TSQLQuery de opties sqoKeepOpenOnCommit, sqoAutoApplyUpdates, sqoAutoCommit aanzetten.

    sqoKeepOpenOnCommit zorgt ervoor dat de dataset open blijft (of eigenlijk heropend wordt) wanneer er een commit gedaan wordt. Vaak vragen beginners zich af waarom de dataset gesloten is na een commit. Een handmatige Transaction.CommitRetaining laat de dataset overigens wel open. Maar een Transaction.Commit sluit normaal gesproken alle connected datasets.

    sqoAutoApplyUpdates zorgt voor automatisch ApplyUpdates na een Post (willen beginners ook nog wel eens vergeten en in Delphi gebeurd dat vaak automatisch).

    sqoAutoCommit zorgt voor een Commit na een ApplyUpdates (en dus Post als sqoAutoApplyUpdates) en na een ExecSQL.

  7. #7
    alleen moet je bij commitretaining weer oppassen omdat de versioning in de weg kan gaan zitten.

    Volgens mij is voor veel mensen het concept van transacties nog steeds lastig en Firebird maakt het nog eat lastiger met zijn versioning.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •