Oracle Crea tabella temporanea

Oracle Crea Tabella Temporanea



Le tabelle temporanee globali sono utili quando si archiviano dati provvisori necessari solo per una transazione o la durata di una sessione. A differenza delle tabelle normali, le tabelle temporanee globali vengono eliminate automaticamente al termine della sessione o della transazione. Pertanto, non è necessario eliminarli esplicitamente come le normali tabelle. Tuttavia, le tabelle temporanee globali sono visibili solo alla sessione corrente, quindi non sono accessibili da altre sessioni o utenti.

In Oracle, una tabella temporanea globale è un tipo speciale di tabella creata utilizzando l'istruzione 'create global temporary table'. Questa istruzione è simile alla normale istruzione 'create table' ma include la parola chiave 'global temporary' per specificare che la tabella è una tabella temporanea globale.







La sintassi dell'istruzione 'CREATE GLOBAL TEMPORARY TABLE' è la seguente:



CREATE GLOBAL TEMPORARY TABLE nome_tabella (
tipo di dati colonna1 [NULL | NON NULLO],
tipo di dati colonna2 [NULL | NON NULLO],
...
) [SU COMMIT {DELETE | PRESERVA} RIGHE];

In questa sintassi, table_name è il nome della tabella temporanea globale che si desidera creare. colonna1, colonna2 e così via, sono i nomi e i tipi di dati delle colonne nella tabella.



La clausola ON COMMIT specifica se le righe nella tabella verranno eliminate o conservate quando viene eseguito il commit della transazione corrente. Il motore di database utilizzerà l'opzione ON COMMIT DELETE ROWS se la clausola ON COMMIT non è definita.





Come accennato, tieni presente che i dati in una tabella temporanea sono privati. Ciò significa che nessun'altra sessione diversa da quella che ha creato la tabella può accedervi.

Esempio di creazione di una tabella temporanea globale

Scopriamo alcuni esempi pratici di utilizzo dell'istruzione create temporary table nei database Oracle.



Considera la query di esempio mostrata di seguito:

CREA TABELLA TEMPORANEA GLOBALE temp_sales (
product_id NUMBER(10) NOT NULL,
data_vendita DATA NON NULL,
importo_vendita NUMBER(10,2) NOT NULL
) ON COMMIT DELETE RIGHE;

Nell'esempio sopra, creiamo una tabella temporanea utilizzando l'opzione ON COMMIT DELETE ROWS.

Possiamo quindi inserire alcuni dati di esempio come:

INSERT INTO TEMP_SALES (product_id, sale_date, sale_amount) VALUES (1, DATE '2022-10-01', 100);
INSERT INTO TEMP_SALES (product_id, sale_date, sale_amount) VALUES (2, DATE '2022-10-02', 500);
INSERT INTO TEMP_SALES (product_id, sale_date, sale_amount) VALUES (3, DATE '2022-10-03', 130);

Successivamente, puoi eseguire il commit della transazione come:

COMMETTERE;

Dopo il commit, il motore di database tronca tutti i dati nella tabella temporanea come specificato nella clausola di commit.

Esempio 2

L'esempio seguente mostra come creare una tabella che conserva le righe al momento del commit:

CREA TABELLA TEMPORANEA GLOBALE temp_sales (
product_id NUMBER(10) NOT NULL,
data_vendita DATA NON NULL,
importo_vendita NUMBER(10,2) NOT NULL
) ON COMMIT PRESERVE ROW ;

Possiamo quindi aggiungere righe di esempio ed eseguire il commit come mostrato:

INSERT INTO TEMP_SALES (product_id, sale_date, sale_amount) VALUES (1, DATE '2022-10-01', 100);
INSERT INTO TEMP_SALES (product_id, sale_date, sale_amount) VALUES (2, DATE '2022-10-02', 500);
INSERT INTO TEMP_SALES (product_id, sale_date, sale_amount) VALUES (3, DATE '2022-10-03', 130);

COMMETTERE;

In questo caso, i dati dovrebbero essere conservati dopo l'operazione di commit, come mostrato dall'istruzione select di seguito:

SELEZIONA * DA TEMP_SALES;

Produzione:

Conclusione

L'istruzione 'create temporary table' è un potente strumento per la creazione di tabelle temporanee in Oracle. Le tabelle temporanee sono utili per memorizzare i dati temporanei necessari solo per una transazione o una sessione. L'istruzione 'create temporary table' consente di definire la struttura e le colonne della tabella temporanea e di specificare come verranno gestite le righe al momento del commit della transazione. Di conseguenza, l'utilizzo di tabelle temporanee può migliorare le prestazioni e l'efficienza delle query e delle applicazioni e ridurre la quantità di spazio di archiviazione permanente richiesto nel database.