2016-03-29 5 views
0

Ich habe eine Tabelle, aus der ich eine Zeile gelöschtRollback in Oracle 10g

delete from patient where pid=500; 

jetzt habe ich die obige Abfrage Rollback und es wird erfolgreich abgeschlossen, aber auf Abfrage

select *from patient; 

erhalte ich:

"keine Zeilen ausgewählt"

also hat Rollback alle Operationen in der Sitzung rückgängig gemacht?

aber Tabelle Struktur ist vorhanden und nach meinem kleinen Wissen denke ich löschen löscht nur den Datensatz, der durch Rollback abgerufen werden kann oder ist es, weil ich meine Insertionen nicht begangen habe?

+0

so wie viele Zeilen, wo tatsächlich gelöscht durch die 'delete-Anweisung? SQL Clients zeigen normalerweise diese Nummer an (etwas wie "* 42 Zeile (n) gelöscht *") –

+1

war die Zeile mit PID = 500 dort UND VERPFLICHTET? WENN Sie einfügen, dann löschen, dann Rollback - Sie landen in Ihrem ursprünglichen leeren Zustand. –

+0

Ich thik so, weil nach Einfügungen Wenn ich es festschreibe dann funktioniert das Löschen und Rollback gut, da ich die Datensätze durch Rollback nach dem Löschen abrufen kann. –

Antwort

0
  1. Löschen von wird nur die Daten löschen, nicht die Tabellenstruktur.
  2. Der Rollback sollte für die DELETE from-Anweisung funktionieren, die vor dem Löschen einen Sicherungspunkt erstellt.
  3. Wenn es immer noch nicht funktioniert, und wenn Rückblende für die Tabelle aktiviert ist, werden die Daten wieder zu bekommen:

    ALTER TABLE xxTABLENAMExx 
        ENABLE ROW MOVEMENT; 
    
    FLASHBACK TABLE xxTABLENAMExx 
        TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '20' minute); 
    
    ALTER TABLE xxTABLENAMExx 
        DISABLE ROW MOVEMENT; 
    

Geben Sie Ihre Zeit in Minuten, wo Sie den Tisch zurück gerollt wollen zu.

0

Dies ist ein Ergebnis der Sitzung autocommit on, wenn Sie irgendeine Art von Java-Tool oder ein anderes Tool verwenden, die mit der Standardeinstellung autocommit on ausführen Sie Ihre Rollback-Fähigkeit verloren (Flashback ist immer noch eine Option), Rollback zu haben Fähigkeit müssen Sie Ihre Sitzung auf autocommit off

+0

danke für deine Antwort und ich benutze Sql * plus. –

+0

In sqlplus run, Autocommit ausschalten, und dann versuchen – elirevach