SQL Server表变量和临时表的区别 |
本文标签:SQL Server表变量 SQL Server表变量和临时表尽管在穿件的语法上有些类似,但是还是有些区别,下面就将为您介绍这两者间的区别,希望可以使您对SQL Server表变量和临时表加深理解 。 表变量创建的语法类似于SQL Server临时表,区别就在于创建的时候,必须要为之命名 。表变量是变量的一种,表变量也分为本地及全局的两种,本地表变量的名称都是以“@”为前缀,只有在本地当前的用户连接中才可以访问 。全局的表变量的名称都是以“@@”为前缀,一般都是系统的全局变量,像我们常用到的,如@@Error代表错误的号,@@RowCount代表影响的行数 。 如我们看看创建表变量的语句: DECLARE @News Table ( News_id int NOT NULL, NewsTitle varchar(100), NewsContent varchar(2000), NewsDateTime datetime ) 比较临时表及表变量都可以通过SQL的选择、插入、更新及删除语句,它们的的不同主要体现在以下这些: 1)表变量是存储在内存中的,当用户在访问表变量的时候,SQL Server是不产生日志的,而在临时表中是产生日志的; 2)在表变量中,是不允许有非聚集索引的; 3)表变量是不允许有DEFAULT默认值,也不允许有约束; 4)临时表上的统计信息是健全而可靠的,但是表变量上的统计信息是不可靠的; 5)临时表中是有锁的机制,而表变量中就没有锁的机制 。
|