Sqlserver臨時表


臨時表說明:

SQL Server臨時表是臨時對象的一種,臨時對象是以#或者##為前綴的,
諸如臨時存儲過程、臨時函數等都是臨時對象,臨時對象都存儲在tempdb數據庫中。
當我們關閉數據庫時,臨時表會自動刪除。臨時表分為本地臨時表和全局臨時表,
一個#號為前綴的臨時表是本地的,只有當前用戶會話才可以訪問,兩個##為
前綴的臨時表是全局的。本地臨時表的數據庫連接有表的訪問權限,其它連接不能訪問
該表;不同的數據庫連接中,創建的本地臨時表雖然"名字"相同,但是這些表之間
相互並不存在任何關系;在SQLSERVER中,通過特別的命名機制保證本地臨時表在數
據庫連接上的獨立性,意思是你可以在不同的連接里使用相同的本地臨時表名稱。
全局臨時表是用戶在創建表的時候添加"##"前綴的表,其特點是所以數據庫連接
均可使用該全局臨時表,當所有引用該臨時表的數據庫連接斷開后自動刪除。
全局臨時表相比本地臨時表,命名上就需要注意了,與本地臨時表不同的是,全
局臨時表名不能重復。臨時表利用了數據庫臨時表空間,由數據庫系統自動進行維護
,因此節省了物理表空間。並且由於臨時表空間一般利用虛擬內存,大大減少了硬盤的I/O次數,
因此也提高了系統效率。臨時表在事務完畢或會話完畢數據庫會自動清空,不必記得用完
后刪除數據。

臨時表創建:

Case 1: 使用CREATE TABLE創建臨時表
CREATE TABLE {# | ##} temp_table_name (
column_name_1 data type CONSTRAINT,
column_name_2 data type CONSTRAINT,
.
.
.
column_name_n data type CONSTRAINT,
);
Case 2:使用SELECT INTO創建臨時表
SELECT
columns_to_be_selected
INTO
{ # | ##} temp_table_name
FROM
table_name;

臨時表的使用

1. 增刪改查跟物料表是一樣的
2. 需要主要其作用范圍,比如在存儲空間中使用下面語句,則會報對象名#temp無效,
是因為臨時表的作用域在exec中,
exec('select IDENTITY(int,1,1) as ID into #temp from tbName' )
select * from #temp 改成
exec('select IDENTITY(int,1,1) as ID into #temp from tbName;select * from #temp ' )


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM