2016-08-03 15 views
0

Ich habe eine temporäre Tabelle erstellt und ich habe Daten aus einer anderen Tabelle abgerufen und in diese temporäre Tabelle eingefügt. Danach wollte ich eine weitere temporäre Tabelle erstellen und einige Daten aus der vorherigen temporären Tabelle einfügen.Plötzliches Verschwinden von Daten in einer temporären Tabelle

create global temporary table TEMP(
      Col NUMBER); 
insert into TEMP select COL from Table1 where COL = 1 commit; 
select * from TEMP; 
create global temporary table TEMP_2 (Col NUMBER); 
select * from TEMP; 

Zunächst einmal, zeigt es, dass die Daten in der TEMP-Tabelle eingefügt werden, und dann, nachdem ich eine zweite Tabelle erstellt und habe die zweite Anweisung SELECT auf der TEMP-Tabelle, war es leer. Ich verstehe nicht warum!

Antwort

2

Standardmäßig wird eine globale temporäre Tabelle mit der Eigenschaft "on delete commit rows" erstellt. Wenn Sie eine andere Tabelle erstellen, führt Oracle eine implizite Festschreibung durch, sodass Ihre Daten in der ersten Tabelle gelöscht werden.

Sie können dies durch die erste Tabelle ändern zu schaffen wie:

create global temporary table TEMP(
     Col NUMBER) on commit preserve rows; 

Oder Sie können Ihre Aussagen neu ordnen:

create global temporary table TEMP(
      Col NUMBER); 
create global temporary table TEMP_2 (Col NUMBER); 

insert into TEMP select COL from Table1 where COL = 1 commit; 
select * from TEMP; 
select * from TEMP; 

Denken Sie daran, in Oracle globale temporäre Tabellen permanente Objekte sind, sind sie nicht etwas, das Sie normalerweise während der Arbeit erstellen sollten.

Verwandte Themen