Oracle Skapa Temp-tabell

Oracle Skapa Temp Tabell



Globala temporära tabeller är användbara när du lagrar provisoriska data som bara behövs för en transaktion eller sessionslängd. Till skillnad från vanliga tabeller släpps globala temporära tabeller automatiskt när sessionen eller transaktionen avslutas. Så de behöver inte explicit tas bort som vanliga tabeller. Globala temporära tabeller är dock endast synliga för den aktuella sessionen, så de kan inte nås av andra sessioner eller användare.

I Oracle är en global temporär tabell en speciell typ av tabell som skapas med 'skapa global temporär tabell'-satsen. Denna sats liknar den vanliga 'skapa tabell'-satsen men innehåller nyckelordet 'global temporary' för att ange att tabellen är en global temporär tabell.







Syntaxen för 'CREATE GLOBAL TEMPORARY TABLE'-satsen är följande:



SKAPA GLOBAL TILLÄMPLIG TABELL tabellnamn (
kolumn1 datatyp [NULL | INTE NULL],
kolumn2 datatyp [NULL | INTE NULL],
...
) [ON COMMIT {RADERA | BEVARA} RADER];

I den här syntaxen är tabellnamn namnet på den globala temporära tabellen du vill skapa. kolumn1, kolumn2, etc., är namnen och datatyperna för kolumnerna i tabellen.



ON COMMIT-satsen anger om raderna i tabellen kommer att raderas eller bevaras när den aktuella transaktionen genomförs. Databasmotorn kommer att använda alternativet ON COMMIT DELETE ROWS om ON COMMIT-satsen inte är definierad.





Som nämnts, kom ihåg att data i en tillfällig tabell är privat. Det betyder att inga andra sessioner än de som skapade tabellen kan komma åt den.

Skapa globalt tillfälligt tabellexempel

Låt oss upptäcka några praktiska exempel på hur du använder den skapa temporära tabellsatsen i Oracle-databaser.



Tänk på exempelfrågan som visas nedan:

SKAPA GLOBAL TILLÄMPLIG TABELL temp_sales (
product_id NUMBER(10) NOT NULL,
sale_date DATUM INTE NULL,
rea_amount NUMBER(10,2) INTE NULL
) ON COMMIT DELETE ROWS;

I exemplet ovan skapar vi en tillfällig tabell med alternativet ON COMMIT DELETE ROWS.

Vi kan sedan infoga några exempeldata som:

INSERT INTO TEMP_SALES (product_id, sale_date, rea_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, rea_amount) VALUES (3, DATE '2022-10-03', 130);

Efter det kan du utföra transaktionen som:

BEGÅ;

Efter commit kommer databasmotorn att trunkera all data i den temporära tabellen som specificerats i commit-satsen.

Exempel 2

Följande exempel visar hur man skapar en tabell som bevarar rader vid commit:

SKAPA GLOBAL TILLÄMPLIG TABELL temp_sales (
product_id NUMBER(10) NOT NULL,
sale_date DATUM INTE NULL,
rea_amount NUMBER(10,2) INTE NULL
) PÅ COMMIT PRESERVE ROWS ;

Vi kan sedan lägga till exempelrader och commit enligt bilden:

INSERT INTO TEMP_SALES (product_id, sale_date, rea_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, rea_amount) VALUES (3, DATE '2022-10-03', 130);

BEGÅ;

I det här fallet bör data bevaras efter commit-operationen, vilket visas av select-satsen nedan:

VÄLJ * FRÅN TEMP_SALES;

Produktion:

Slutsats

Uttrycket 'skapa temporär tabell' är ett kraftfullt verktyg för att skapa tillfälliga tabeller i Oracle. Tillfälliga tabeller är användbara för att lagra tillfälliga data som endast behövs för en transaktion eller session. Uttrycket 'skapa temporär tabell' låter dig definiera strukturen och kolumnerna i den temporära tabellen och specificera hur raderna kommer att hanteras när transaktionen genomförs. Som ett resultat kan användning av tillfälliga tabeller förbättra prestandan och effektiviteten för dina frågor och applikationer och minska mängden permanent lagringsutrymme som krävs i din databas.