2009-06-19 9 views
2

In Oracle, wenn ich einen Cursor definieren und während der gleichen Zeit, wenn es eine Aktualisierung auf der Tabelle ist, was passiert dann mit meinem Cursor? Wird es ungültig oder Updates spielt keine Rolle?Update auf Zeilen durch einen Cursor in SQL

Antwort

4

Jede Abfrage in Oracle entspricht einem Zeitpunkt (normalerweise der Beginn der Abfrage).

In Ihrem Fall, wenn Sie einen Cursor öffnen und während Sie ihn holen, ändert jemand die Zeilen Oracle wird eine logische Kopie der Daten wie beim Öffnen des Cursors wiederherstellen. Die Änderungen an den Daten, die nach diesem Zeitpunkt vorgenommen wurden, werden nicht angezeigt.

Diese Lesekonsistenz ist ein grundlegender Bestandteil der Oracle-Engine.

Vom Concept Guide, die Lese-Konsistenz:

  • Garantien, dass die Menge der Daten, die von einer Erklärung gesehen in Bezug auf einen bestimmten Zeitpunkt konsistent ist und ändert sich nicht während der Ausführung der Anweisung (auf Anweisungsebene Lesekonsistenz)
  • Stellt sicher, dass die Leser von Datenbankdaten warten nicht auf Autoren oder andere Leser der gleichen Daten
  • Stellt sicher, dass Autoren von Datenbankdaten nicht warten, für die Leser der gleichen Daten
  • Stellt sicher, dass w Riter warten nur auf andere Schreiber, wenn sie versuchen, identische Zeilen in gleichzeitigen Transaktionen zu aktualisieren