sql >> Databasteknik >  >> RDS >> Sqlserver

Det finns redan ett objekt med namnet '#columntable' i databasen

Temp-tabeller släpps inte automatiskt i slutet av en fråga, bara när den aktuella anslutningen till DB släpps eller du uttryckligen tar bort dem med DROP TABLE #columntable

Antingen testar du om tabellen finns i början av frågan eller tar alltid bort den i slutet (helst båda)

EDIT:Som Matrin sa i sin kommentar, detta är faktiskt ett analysfel. Du får samma fel om du bara analyserar SQL som när du körde den.

För att testa det delade jag upp din fråga och försökte:

if exists (select 1 from emp where id = 6)
  create table #columntable (newcolumns varchar(100))
GO
if not exists (select 1 from emp where id = 6)
  create table #columntable (oldcolumns varchar(100))
GO

Parsern är nöjd med det. Intressant nog, om du ändrar till att använda icke-temp tabeller, analyserar den ursprungliga frågan bra (jag inser de problem som skulle skapa, jag var bara intresserad av att ta reda på varför frågan inte skulle analyseras).



  1. Använda flera POSTGRES-databaser och scheman med samma Flask-SQLAlchemy-modell

  2. Hitta alla referenser att visa

  3. mysql förfrågan rum tillgänglighet

  4. Del 1 – Hur man installerar SuiteCRM och omvänder dess databas