有时我们为了临时存放一些数据,需要使用到数据库中的临时表,在SQL Server 中临时表存储在 tempdb 系统数据库中。
临时表有两种类型:本地临时表和全局临时表,它们的区别主要体现在名称、可见性以及可用性上的区别:
本地临时表的名称以单个数字符号 (#) 开头,它们仅对当前的用户连接是可见的,当用户从数据库实例断开连接时本地临时表会被删除;全局临时表的名称以两个数字符号 (##) 开头,创建后对任何用户都是可见的,当所有引用该表的用户从数据库实例断开连接时全局临时表将被删除。
另外临时表和平时用户创建的普通表(也叫永久表)也存在一定的区别:
当创建test_emp永久表时,在数据库中拥有使用该表权限的用户都可以使用该表,除非该永久表被删除;如果会话创建了#test_emp本地临时表,则仅当前会话可以使用该本地临时表,直到当前会话删除该本地临时表;如果创建了 ##test_emp 全局临时表,则数据库中的任何用户均可使用该表。如果该表没有其他用户使用,当创建该表的会话断开连接时该表将被删除。如果该表有另外用户在使用,则数据库将在创建该表的会话断开连接并且所有其他会话均不使用该表时将其删除。