English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In Oracle8i o versioni successive, è possibile creare due tipi di tabelle temporanee seguenti:
1. Tabelle temporanee specifiche della sessione
CREATE GLOBAL TEMPORARY <TABLE_NAME> ( <specifica_colonna> )
ON COMMIT PRESERVE ROWS;
2. Tabelle temporanee specifiche della transazione
CREATE GLOBAL TEMPORARY <TABLE_NAME> ( <specifica_colonna> )
ON COMMIT DELETE ROWS;
CREATE GLOBAL TEMPORARY TABLE MyTempTable
Le tabelle temporanee create esistono, ma provate ad inserire una registrazione e poi connetevi con un altro collegamento per selezionare, la registrazione è vuota, chiaro? Ripeto le seguenti due frasi:
--ON COMMIT DELETE ROWS indica che la tabella temporanea è specificata per la transazione, ORACLE troncherà la tabella (cancellerà tutte le righe) dopo ogni submit.
--ON COMMIT PRESERVE ROWS indica che la tabella temporanea è specificata per la sessione, quando la sessione viene interrotta, ORACLE troncherà la tabella.
Il problema di conflitto non deve essere considerato.
Le tabelle temporanee salvano solo i dati utilizzati dalla sessione corrente (session), i dati esistono solo durante la transazione o la sessione.
Creare una tabella temporanea utilizzando il comando CREATE GLOBAL TEMPORARY TABLE, per le tabelle temporanee di tipo transazione, i dati esistono solo durante la transazione, per le tabelle temporanee di tipo sessione, i dati esistono durante la sessione.
I dati della sessione sono privati per la sessione corrente. Ogni sessione può vedere e modificare solo i propri dati. Non vengono applicati lock DML ai dati delle tabelle temporanee. Le seguenti istruzioni controllano l'esistenza delle righe.
● ON COMMIT DELETE ROWS La riga del nome della tabella è visibile solo durante il periodo della transazione
● ON COMMIT PRESERVE ROWS La riga del nome della tabella è visibile durante tutto il periodo della sessione
È possibile creare indici, viste, trigger per le tabelle temporanee, utilizzare gli strumenti export e import per importare ed esportare la definizione della tabella, ma non è possibile esportare i dati. La definizione della tabella è visibile a tutte le sessioni.
Tabelle temporanee Temporary Tables
1 Introduzione
Il database ORACLE oltre a poter salvare tabelle permanenti, può anche creare tabelle temporanee temporary tables. Queste tabelle temporanee vengono utilizzate per salvare i dati di una sessione SESSION,
oppure i dati necessari in una transazione. Quando la sessione termina o l'utente esegue commit e rollback della transazione, i dati della tabella temporanea vengono svuotati automaticamente.
Ma la struttura e i metadati delle tabelle temporanee sono ancora memorizzati nel dizionario utente.
Le tabelle temporanee sono supportate solo nei prodotti Oracle 8i e superiori.
2 Dettagli
Le tabelle temporanee Oracle sono divise in tabelle temporanee a livello di sessione e tabelle temporanee a livello di transazione.
Le tabelle temporanee a livello di sessione sono quelle in cui i dati nella tabella esistono solo durante il ciclo di vita della sessione. Quando l'utente esce e la sessione termina, Oracle pulisce automaticamente i dati nella tabella temporanea.
Le tabelle temporanee a livello di transazione sono quelle in cui i dati nella tabella esistono solo durante il ciclo di vita della transazione. Quando una transazione termina (commit o rollback), Oracle pulisce automaticamente i dati nella tabella temporanea.
I dati nella tabella temporanea sono validi solo per la Sessione corrente, ogni Sessione ha i propri dati temporanei e non può accedere ai dati temporanei delle altre Sessioni. Pertanto,
Le tabelle temporanee non richiedono lock DML. Quando una sessione termina (uscita normale dell'utente, uscita anomala o crash dell'istanza ORACLE) o quando una transazione termina, Oracle pulisce i dati della sessione.
L'esecuzione della frase TRUNCATE svuota i dati della tabella temporanea. Ma non svuota i dati delle tabelle temporanee di altre sessioni.
Puoi creare indici su tabelle temporanee e viste basate su tabelle temporanee. Allo stesso modo, gli indici creati sulle tabelle temporanee sono temporanei e validi solo per la sessione o la transazione corrente.
Le tabelle temporanee possono avere trigger.
3 Creazione di tabelle temporanee
La definizione della tabella temporanea è visibile a tutte le sessioni SESSION, ma i dati nella tabella sono validi solo per la sessione o la transazione corrente.
Metodo di creazione:
1) ON COMMIT DELETE ROWS definisce il metodo per creare tabelle temporanee a livello di transazione.
CREATE GLOBAL TEMPORARY TABLE admin_work_area (startdate DATE, enddate DATE, class CHAR(20)) ON COMMIT DELETE ROWS;
ESEMPIO:
SQL> CREATE GLOBAL TEMPORARY TABLE admin_work_area (startdate DATE, enddate DATE, class CHAR(20)) ON COMMIT DELETE ROWS; SQL> create table permernate( a number); SQL> insert into admin_work_area values(sysdate,sysdate, ‘temporary table ‘); SQL> insert into permernate values(1); SQL> commit; SQL> select * from admin_work_area; SQL> select * from permernate; A 1
2)ON COMMIT PRESERVE ROWS definisce il metodo per creare tabelle temporanee a livello di sessione.
CREATE GLOBAL TEMPORARY TABLE admin_work_area (startdate DATE, enddate DATE, class CHAR(20)) ON COMMIT PRESERVE ROWS; ESEMPIO:
Sessione 1:
SQL> drop table admin_work_area; SQL> CREATE GLOBAL TEMPORARY TABLE admin_work_area 2 (startdate DATE, 3 enddate DATE, 4 class CHAR(20)) 5 ON COMMIT PRESERVE ROWS; SQL> insert into permernate values(2); SQL> insert into admin_work_area values(sysdate,sysdate, ‘session temperary ‘); SQL> commit; SQL> select * from permernate; A ---------- 1 2 SQL> select * from admin_work_area; STARTDATE ENDDATE CLASS ---------- ---------- -------------------- 17-1?? -03 17-1?? -03 session temperary
Sessione 2:
SQL> select * from permernate; A ---------- 1 2 SQL> select * from admin_work_area;
Nessuna riga selezionata.
La sessione 2 non può vedere i dati delle tabelle temporanee della sessione 1.
Differenze tra tabella temporanea ORACLE e tabella temporanea SQLSERVER
Tabella temporanea SQL SERVER
È anche possibile creare tabelle temporanee. Le tabelle temporanee sono simili alle tabelle permanenti, ma vengono memorizzate nel tempdb e vengono eliminate automaticamente quando non vengono più utilizzate.
Ci sono due tipi di tabelle temporanee, locali e globali, che sono diversi per nome, visibilità e disponibilità. I nomi delle tabelle temporanee locali iniziano con il segno di numero (#)
Sono visibili solo per la connessione dell'utente corrente; vengono eliminati quando l'utente si disconnette dall'istanza Microsoft? SQL Server? 2000. I nomi delle tabelle temporanee globali iniziano con i simboli matematici
(##) Iniziate con il segno di numero, sono visibili per tutti gli utenti dopo la creazione e vengono eliminate quando tutti gli utenti che si collegano a SQL Server si disconnettono.
Ad esempio, se si crea una tabella denominata employees, chiunque abbia i permessi di sicurezza per utilizzare la tabella nel database può farlo, a meno che non sia stata eliminata.
Se si crea una tabella temporanea locale denominata #employees, solo tu puoi eseguire operazioni su questa tabella e questa tabella viene eliminata quando si interrompe la connessione. Se si crea una tabella temporanea globale denominata ##employees
Any user in the data table can perform operations on the table. If no other user uses the table after you create it, the table will be deleted when you disconnect. If the table is used by other users after you create it
After other users use it, SQL Server will delete the table after all users disconnect.
Different:
1. SQL SERVER's temporary tables are a type of 'memory table', the table is stored in memory. ORACLE temporary tables will retain the table definition in the data dictionary unless DROP TABLE is executed.
2. SQL SERVER's temporary tables do not have the same transaction-level functionality as ORACLE temporary tables.
3 SQL SERVER's local temporary table (#) is similar to ORACLE's session-level temporary table, but ORACLE will not delete the table when the session exits.
4 SQL SERVER's global temporary table (##) refers to multiple connections sharing the same memory area. When there are no pointers referencing the memory area, SQL SERVER automatically releases the global temporary table.
5 Since ORACLE is not a database stored in memory. So if ORACLE often creates and deletes temporary tables like SQL SERVER, it will definitely affect performance.
Therefore, ORACLE will retain the definition of temporary tables until the user drops the table.
6 In ORACLE, if multiple users need to share a table (similar to SQL SERVER's global temporary table ##), you can use permanent tables,
And add some columns that can uniquely identify users in the table. Use triggers and views. When a user logs out, delete the corresponding data in the table based on the unique information of the login user.
This method brings a certain amount of load to ORACLE.
This is the organization of information about Oracle temporary tables, we will continue to supplement relevant information, thank you for your support to this site!