Tijdelijke SQL Server-tabellen slaan gegevens tijdelijk op. U kunt dezelfde bewerkingen, zoals SELECT, INSERT, DELETE en UPDATE, op een tijdelijke tabel uitvoeren als op een gewone SQL-tabel.
Tijdelijke tabellen leven in de tempdb-database en zijn alleen zichtbaar tijdens de duur van de verbinding. Wanneer u de verbinding verbreekt, verwijdert SQL Server de tijdelijke tabel. U kunt het ook op elk moment expliciet verwijderen.
Typen tijdelijke SQL Server-tabellen
Er zijn twee typen tijdelijke SQL Server-tabellen: lokaal en globaal.
Lokale Temp-tabel
Een lokale tijdelijke tabel is alleen zichtbaar voor de verbinding die deze heeft gemaakt. Wanneer die verbinding wordt verbroken of de gebruiker de verbinding verbreekt met het SQL-server een lokale tijdelijke tabel wordt bijvoorbeeld automatisch verwijderd.
Om een lokale tijdelijke tabel te maken, gebruikt u een enkel hekje (#) aan het begin van de tabelnaam met de instructie CREATE TABLE. Hier is de syntaxis.
CREËRENTAFEL#TempTable (
Kolom1 INT,
Kolom2 VARCHAR(50)
);
Met de volgende code wordt bijvoorbeeld een tijdelijke tabel gemaakt met de naam TempCustomer met een naam en een e-mailadres.
CREËRENTAFEL#TempKlant (
ID int NOT NULL PRIMAIRE SLEUTEL
Volledige naam VARCHAR(50),
E-mail VARCHAR(50)
);
Globale Temp-tabel
Een globale tijdelijke tabel is een tijdelijke tabel die zichtbaar is voor alle verbindingen en gebruikers. SQL Server laat het vallen wanneer alle verbindingen en gebruikers die naar de tabel verwijzen, zijn losgekoppeld.
Om een globale tijdelijke tabel te maken, voeg je dubbele hashes (##) toe aan de tabelnaam en gebruik je de instructie CREATE TABLE.
CREËRENTAFEL##TempTabel (
Kolom1 INT,
Kolom2 VARCHAR(50)
);
De volgende code maakt een globale tijdelijke tabel met de naam TempCustomer.
CREËRENTAFEL##TempKlant (
ID int NOT NULL PRIMAIRE SLEUTEL
Volledige naam VARCHAR(50),
E-mail VARCHAR(50)
);
Deze code is vergelijkbaar met het voorbeeld voor de lokale temp-tabel, alleen met twee hash-symbolen in plaats van één. U kunt nu gebruiken standaard SQL-commando's om de gegevens in de tijdelijke tabel toe te voegen of te manipuleren.
Hoe een tijdelijke tabel te laten vallen
De SQL Server-instantie laat automatisch een tijdelijke tabel vallen wanneer alle gebruikers die ernaar verwijzen de verbinding hebben verbroken. Als best practice moet u uw tijdelijke tabellen altijd expliciet verwijderen om het tempdb-geheugen vrij te maken.
Om een tijdelijke tabel te verwijderen, gebruikt u de instructie DROP TABLE IF EXISTS gevolgd door de naam van de tijdelijke tabel.
Ga als volgt te werk om de #TempCustomer-tabel te verwijderen:
DRUPPELTAFELALSBESTAAT#TempKlant
Gebruik dezelfde code maar verwissel de tabelnaam om een globale tijdelijke tabel te laten vallen.
DRUPPELTAFELALSBESTAAT##TempKlant
Typisch gebruik van tijdelijke SQL-tabellen
Tijdelijke tabellen zijn handig wanneer u tussentijdse resultaten moet opslaan van complexe query's die u verder moet verwerken. Als u bijvoorbeeld rapporten maakt, moet u mogelijk tijdelijke tabellen maken om queryresultaten uit verschillende databases op te slaan. Vervolgens kunt u het definitieve rapport genereren door een query uit te voeren op de tijdelijke tabellen.
Een ander scenario waarbij tijdelijke tabellen nuttig zijn, is wanneer u de queryresultaten van de ene tabel nodig hebt om een andere query uit te voeren. U kunt de resultaten opslaan in een tijdelijke tabel en er vervolgens naar verwijzen in uw nieuwe query. In wezen gebruikt u de tijdelijke tabel als een werk- of buffertabel om de gegevens op te slaan die u nodig hebt om een specifieke taak uit te voeren.
Tijdelijke tabellen gebruiken in SQL Server
U kunt tijdelijke SQL Server-tabellen gebruiken om gegevens tijdelijk op te slaan en te verwerken. Er zijn twee typen tijdelijke tabellen, lokaal en globaal. Een lokale tijdelijke tabel is zichtbaar voor de verbinding waarin deze is gemaakt, terwijl een globale tijdelijke tabel zichtbaar is voor alle verbindingen.
Tijdelijke tabellen worden automatisch vernietigd wanneer u de verbinding met de serverinstantie verbreekt. Om geheugen te besparen, moet u ze na gebruik altijd laten vallen.