--【临时表的生命周期】整个会话中(当前sql页面)
CREATE TABLE TempMain (ID int Identity(1,1), [TempMainNO] INT, Name VARCHAR(3))
INSERT INTO TempMain VALUES(1,'1')
SELECT ID, TempMainNO, Name INTO #Temp FROM TempMain
GO
--Go断开连接后 单独运行下面的select #Temp临时表还是存在的。另外开一个sql页面就自动drop掉了,除非是全局@@temp
SELECT * FROM #Temp
GO
SELECT * FROM #Temp
--【表变量的生命周期】一次连接中(选定的执行语句execute,当然是在一个批处理中的)
--【临时表的生命周期】整个会话中(当前sql页面)
DECLARE @VariableTable TABLE (ID int Identity(1,1), [VariableTableMainNO] INT, Name VARCHAR(3))
INSERT INTO @VariableTable VALUES(1,'1')
SELECT * FROM @VariableTable
SELECT * FROM @VariableTable --生命存在
GO
--Go断开连接后 单独运行下面的select #Temp临时表还是存在的
SELECT * FROM @VariableTable --不存在
GO
--WITH AS创建的表的生命周期
WITH CTE(ID ,[TempMainNO], Name) AS (SELECT * FROM TempMain)
SELECT * FROM CTE --存在
SELECT * FROM CTE --不存在, 只能使用一次