Microsoft SQL Server
Användning av TEMP-tabell
Sök…
Anmärkningar
Tillfälliga tabeller är verkligen mycket hjälpsamma.
Tabellen kan skapas vid körning och kan utföra alla åtgärder som görs i en normal tabell.
Dessa tabeller skapas i en tempdb-databas.
Används när?
Vi måste göra komplexa anslutningsoperationer.
Vi gör ett stort antal radmanipulationer i lagrade procedurer.
Kan ersätta användningen av markören.
Således ökar prestandan.
Lokal temptabell
Kommer att finnas tills den aktuella anslutningen kvarstår för användaren.
Raderas automatiskt när användaren kopplar bort.
Namnet bör börja med # (#temp)
CREATE TABLE #LocalTempTable( StudentID int, StudentName varchar(50), StudentAddress varchar(150))
insert into #LocalTempTable values ( 1, 'Ram','India');
select * from #LocalTempTable
Efter att ha utfört alla dessa uttalanden om vi stänger frågefönstret och öppnar det igen och försöker infoga och markera det visar ett felmeddelande
“Invalid object name #LocalTempTable”
Global temp-tabell
Börjar med ## (## temp).
Raderas endast om användaren kopplar bort alla anslutningar.
Det uppför sig som ett permanent bord.
CREATE TABLE ##NewGlobalTempTable( StudentID int, StudentName varchar(50), StudentAddress varchar(150)) Insert Into ##NewGlobalTempTable values ( 1,'Ram','India'); Select * from ##NewGlobalTempTable
Obs: Dessa kan ses av alla användare av databasen, oavsett behörighetsnivå.
Släpp temp-tabeller
Temp-tabeller måste ha unika ID (inom sessionen, för lokala temp-tabeller eller på servern, för globala temp-tabeller). Om du försöker skapa en tabell med ett redan existerat namn returnerar följande fel:
There is already an object named '#tempTable' in the database.
Om din fråga producerar temp-tabeller och du vill köra den mer än en gång måste du släppa tabellerna innan du försöker generera dem igen. Den grundläggande syntaxen för detta är:
drop table #tempTable
Att försöka köra denna syntax innan tabellen finns (t.ex. i den första körningen av din syntax) kommer att orsaka ytterligare ett fel:
Cannot drop the table '#tempTable', because it does not exist or you do not have permission.
För att undvika detta kan du kontrollera om tabellen redan finns innan du släpper den, så här:
IF OBJECT_ID ('tempdb..#tempTable', 'U') is not null DROP TABLE #tempTable