Oracle Lag Temp Table

Oracle Lag Temp Table



Globale midlertidige tabeller er nyttige når du lagrer foreløpige data som bare er nødvendig for en transaksjon eller øktvarighet. I motsetning til vanlige tabeller, slettes globale midlertidige tabeller automatisk når økten eller transaksjonen avsluttes. Så de trenger ikke å bli eksplisitt droppet som vanlige tabeller. Globale midlertidige tabeller er imidlertid bare synlige for gjeldende økt, så de kan ikke åpnes av andre økter eller brukere.

I Oracle er en global midlertidig tabell en spesiell type tabell opprettet ved hjelp av 'opprett global midlertidig tabell'-setningen. Denne setningen ligner den vanlige 'opprett tabell'-setningen, men inkluderer nøkkelordet 'global midlertidig' for å spesifisere at tabellen er en global midlertidig tabell.







Syntaksen til 'CREATE GLOBAL TEMPORARY TABLE'-setningen er som følger:



LAG GLOBAL MIDLERTIDIG TABELL tabellnavn (
kolonne1 datatype [NULL | IKKE NULL],
kolonne2 datatype [NULL | IKKE NULL],
...
) [ON COMMIT {SLETT | BEHOLD} RADER];

I denne syntaksen er tabellnavn navnet på den globale midlertidige tabellen du vil opprette. kolonne1, kolonne2 osv. er navnene og datatypene til kolonnene i tabellen.



ON COMMIT-klausulen spesifiserer om radene i tabellen vil bli slettet eller bevart når gjeldende transaksjon er forpliktet. Databasemotoren vil bruke alternativet ON COMMIT DELETE ROWS hvis ON COMMIT-leddet ikke er definert.





Som nevnt, husk at dataene i en midlertidig tabell er private. Dette betyr at ingen andre økter enn den som opprettet tabellen kan få tilgang til den.

Opprette globalt midlertidig tabelleksempel

La oss finne noen praktiske eksempler på bruk av opprette midlertidig tabellsetning i Oracle-databaser.



Tenk på eksempelspørringen vist nedenfor:

LAG GLOBAL MIDLERTIDIG TABELL temp_sales (
product_id NUMBER(10) NOT NULL,
sale_date DATO IKKE NULL,
salgsbeløp NUMBER(10,2) IKKE NULL
) ON COMMIT SLETT RADER;

I eksemplet ovenfor oppretter vi en midlertidig tabell ved å bruke alternativet ON COMMIT DELETE ROWS.

Vi kan deretter sette inn noen eksempeldata som:

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);

Etter det kan du utføre transaksjonen som:

BEGÅ;

Etter committing vil databasemotoren avkorte alle dataene i den midlertidige tabellen som spesifisert i commit-klausulen.

Eksempel 2

Følgende eksempel viser hvordan du oppretter en tabell som bevarer rader ved commit:

LAG GLOBAL MIDLERTIDIG TABELL temp_sales (
product_id NUMBER(10) NOT NULL,
sale_date DATE IKKE NULL,
salgsbeløp NUMBER(10,2) IKKE NULL
) PÅ COMMIT PRESERVE RADER ;

Vi kan deretter legge til eksempelrader og forplikte som vist:

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);

BEGÅ;

I dette tilfellet bør dataene bevares etter commit-operasjonen, som vist med select-setningen nedenfor:

VELG * FRA TEMP_SALES;

Produksjon:

Konklusjon

'Create temporary table'-setningen er et kraftig verktøy for å lage midlertidige tabeller i Oracle. Midlertidige tabeller er nyttige for å lagre midlertidige data som kun er nødvendige for en transaksjon eller økt. 'Opprett midlertidig tabell'-setningen lar deg definere strukturen og kolonnene til den midlertidige tabellen og spesifisere hvordan radene skal håndteres når transaksjonen er forpliktet. Som et resultat kan bruk av midlertidige tabeller forbedre ytelsen og effektiviteten til spørringene og applikasjonene dine og redusere mengden permanent lagringsplass som kreves i databasen.