Temp tabele

Wednesday, 02.07.2008 – Zidar

Koliko puta mi se desilo da pokusam da izvrsim nesto ovako:

SELECT * INTO #TempTAble FROM MyTable

da bih dobio poruku

Msg 2714, Level 16, State 6, Line 1 There is already an object named ‘#TempTable’ in the database.

Pokusaj da ordadim ovo:

IF  Object_id(‘#TempTable’) IS NOT NULL DROP #TempTable

daje mi ovo:

Msg 102 , Level 15, State 1,  Line 1 Incorrect syntax near ‘#TempTable’

Naravno, Object_ID radi samo sa ‘lokalnim’ tabelama. Medjutim, pametni ljudi nadju reseje za sve. Jedna pametan covek, Itzik Ben-Gan, u knjizi “Inside Microsofr SQL Server 2005: T-SQL programming” dao je ovakvo resenje:

IF Object_id(‘tempdb..#TempTable’) IS NOT NULL DROP TABLE #TempTable

Radi bez greske, pa mogu da napisem:

IF Object_id(‘tempdb..#TempTable’) IS NOT NULL DROP TABLE #TempTable
SELECT   *  INTO #TempTable FROM dbo.Board
i da me vise ne moram da mislim da li sam dropnuo ili nisam temp tabelu.

U istoj knjizi pise i da se temp tabela moze indeksirati, na primer
— Add some indexing:

CREATE  UNIQUE CLUSTERED INDEX id_tblSIF ON #tblSIF (StudentBarcode, FieldName)

Moja tabela od 500,000 slogova ce sada mnogo brze da odgovara na upite.

 

Post a Comment