SQL Server 表变量与临时表
临时表
它存储在Tempdb中,显示删除(DROP)或连接断开时数据才会被删除。
- 本地临时表:以
#
为前缀,只对本地当前的用户连接可见,连接断开时被删除。 - 全局临时表:以
##
为前缀,对所有用户可见,当所有引用该表的用户断开连接时被删除。
表变量
表变量在批处理结束后自动被删除
- 本地表变量:以
@
为前缀 - 全局表变量:以
@@
为前缀,一般都是系统的全局变量,如:@@Error、@@RowCount
表变量和临时表的区别
- 表变量是存储在内存中,不产生日志
- 表变量不允许有非聚集索引
- 表变量是不允许有默认值,也不允许有约束
- 临时表中是有锁的机制,表变量没有