Announcement

Collapse
No announcement yet.

Frage zu SQLs und IBX

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Frage zu SQLs und IBX

    Hallo!

    Im Thema "IBX" bin ich noch nicht so ganz drin. Bin wohl eher der mySQL
    Freak. Na gut hier meine Frage / mein Problem:

    Ich führe eine SQL aus und erhalte ein Ergebnis zurück. Nun ändere ich aus
    einem anderen Programm heraus etwas an den Daten und die Daten sind auch
    schon in die Datenbank geschrieben (die Transaktion ist abgeschlossen).
    Führe ich nun die gleiche SQL wieder aus, erhalte ich genau den gleichen
    Wert wie davor, nicht den neuen.

    Was kann man da machen? Wo ist der Trick dabei?

    Vielen Dank im voraus für eure Antworten!

    Liebe Grüsse,

    M. Geldon

  • #2
    Hallo,

    ich kenne ein ähnliches Problem aus Interbase + IB-Components.

    Wenn das IBQuery auf snapshot steht, dann muss man auch dort vor jeder neuen Abfrage für die Transaction dieses IBQueries ein commit ausführen, damit neue Daten geholt werden, sonst wird immer derselbst snapshot geprüft (mit immer demselben Ergebnis, natürlich). Könnte es etwas ähnliches sein?

    Grüße

    Juli

    Comment


    • #3
      Das kann am Isolationslevel liegen. Der Isolationslevel darf nicht auf "READ UNCOMMITTED" stehen und "REPEATABLE READ" sollte ausgewählt sein.

      Gruß

      Sebastia

      Comment


      • #4
        Hallo,

        >Das kann am Isolationslevel liegen...

        es liegt in der Tat am Isolationsgrad der Transaktion, wobei sich der InterBase streng an die Regeln des SQL-Standards hält. Nur dann, wenn READ COMMITTED (alias <i>Committed lesen</i> alias <i>read_committed</i>) verwendet wird, darf ein Client die von einer anderen Transaktion über ein COMMIT geänderte Daten in seiner eigenen Transaktion sehen. Wenn allerdings der Isolationsgrad SNAPSHOT (alias <i>Schnappschuß</i>) verwendet wird, sieht ein Client nur dann die Daten einer anderen Transaktion, wenn seine eigene Transaktionsnummer höher ist (d.h. der Client muss vor der SQL-Abfrage eine neue Transaktion starten).

        Es ist aber keine gute Idee, generell READ COMMITTED zu verwenden, da in diesem Fall die Synchronisisationsprobleme (Unrepeatable Read-Problem und Phantom-Problem) beachtet werden müssen. Daher ist die Kombination von SNAPSHOT in Verbindung mit einer eigenen Transaktionssteuerung in der Regel die bessere Wahl, weil sicherer

        Comment

        Working...
        X