sql >> Databasteknik >  >> RDS >> Oracle

Skapa en global tillfällig tabell i Oracle

-Oracle låter oss  skapa en tillfällig tabell .

-Definitionen av en temporär tabell är synlig för alla sessioner, men data i en temporär tabell är endast synlig för sessionen som infogar data i tabellen.

-Vi måste använda CREATE GLOBAL TEMPORARY TABLE för att skapa en tillfällig tabell.

- ON COMMIT -klausulen anger om data i tabellen är transaktionsspecifik (standard) eller sessionsspecifik

RADERA RADER

Detta skapar en tillfällig tabell som är transaktionsspecifik. En session blir bunden till den temporära tabellen med en transaktion som först infogas i tabellen. Bindningen försvinner i slutet av transaktionen. Databasen trunkerar tabellen (ta bort alla rader) efter varje commit.

BEVARA RADER

Detta skapar en tillfällig tabell som är sessionsspecifik. En session binds till den temporära tabellen med den första infogningen i tabellen i sessionen. Denna bindning försvinner i slutet av sessionen eller genom att utfärda en TRUNCATE av tabellen i sessionen. Databasen trunkerar tabellen när du avslutar sessionen.

Tillfälliga tabeller är användbara i applikationer där en resultatuppsättning ska buffras, kanske för att den är konstruerad genom att köra flera DML-operationer

SKAPA GLOBAL TILLÄMPLIG TABELL GL_DATA_TEMP
(startdatum DATUM,
slutdatum DATUM,
gl_id CHAR(20))
ON COMMIT DELETE ROWS;

Index kan skapas på tillfälliga tabeller . De är också tillfälliga och data i indexet har samma session eller transaktionsomfattning som data i den underliggande tabellen.

Om TRUNCATE-satsen utfärdas mot en temporär tabell, trunkeras endast sessionsspecifika data. Det finns ingen effekt på data från andra sessioner.

Om du återställer en transaktion försvinner den information du angav, även om tabelldefinitionen kvarstår.

Data i temporära tabeller lagras i temporära segment i det temporära tabellutrymmet som inte genererar någon redo så operation med global temporär tabell är relativt snabbare. Men ångra genereras fortfarande i ångra tabellutrymmet som har omloggning. Så gör om operationen är inte helt eliminerad i globala temporära tabeller men de är relativt lägre

Data i temporära tabeller raderas automatiskt i slutet av databassessionen, även om den slutar onormalt.

Vyer kan skapas mot tillfälliga tabeller och kombinationer av tillfälliga och permanenta tabeller. De kan ha utlösare kopplade till sig

Med 12.1(12c-databas) Oracle-versionen har konceptet med temporär ångra introducerats som gör att ångrasegmenten för globala temporära tabeller kan lagras i den temporära tabellytan. Detta gör att globala temporära tabeller kan användas i fysiska standby-databaser och skrivskyddade databaser, samt tar bort behovet av att skapa redo.

ALTER SYSTEM SET TEMP_UNDO_ENABLED =TRUE;
ALTER SYSTEM SET TEMP_UNDO_ENABLED =FALSE;


  1. Fråga en parameter (postgresql.conf-inställning) som max_connections

  2. Hur man programmatiskt genererar DDL från Oracle-databas?

  3. Hur man formaterar ett datum i T-SQL

  4. Hur PERIOD_DIFF() fungerar i MariaDB