サーチ…


備考

一時テーブルは本当に非常に便利です。

実行時に表を作成することができ、通常の表で実行されるすべての操作を実行できます。

これらのテーブルは、tempdbデータベースで作成されます。

いつ使う?

  1. 複雑な結合操作が必要です。

  2. ストアドプロシージャでは、多数の行操作を行います。

  3. カーソルの使用方法を置き換えることができます。

したがって、パフォーマンスが向上します。

ローカル温度テーブル

  • ユーザーに対して現在の接続が維持されるまで使用可能になります。

    ユーザーが切断すると自動的に削除されます。

    名前は#(#temp)で始まります。

     CREATE TABLE #LocalTempTable(
                    StudentID      int,
                    StudentName    varchar(50), 
                    StudentAddress varchar(150))
    
insert into #LocalTempTable values ( 1, 'Ram','India');

select * from #LocalTempTable

クエリウィンドウを閉じてもう一度開いて挿入して選択しようとすると、これらの文をすべて実行した後にエラーメッセージが表示されます

“Invalid object name #LocalTempTable”

グローバル温度表

  • ##(## temp)で始まります。

    ユーザーがすべての接続を切断した場合にのみ削除されます。

    それは永久的なテーブルのように動作します。

    CREATE TABLE ##NewGlobalTempTable(
                   StudentID      int,
                   StudentName    varchar(50), 
                   StudentAddress varchar(150))
    
    Insert Into ##NewGlobalTempTable values ( 1,'Ram','India');
    Select * from ##NewGlobalTempTable
    

注:これらは、権限レベルに関係なく、データベースのすべてのユーザーが表示できます。

テンポラリテーブルの削除

一時テーブルには、セッション内、ローカル一時テーブル用、またはグローバルtempテーブル用のサーバー内で一意のIDが必要です。すでに存在する名前を使用してテーブルを作成しようとすると、次のエラーが返されます。

There is already an object named '#tempTable' in the database.

問合せで一時表が作成され、それを複数回実行する場合は、表を再度生成する前に削除する必要があります。このための基本的な構文は次のとおりです。

drop table #tempTable

テーブルが存在する前に(たとえば、構文の最初の実行時に)この構文を実行しようとすると、別のエラーが発生します。

Cannot drop the table '#tempTable', because it does not exist or you do not have permission.

これを避けるには、テーブルを削除する前にテーブルがすでに存在するかどうかを確認することができます。

IF OBJECT_ID ('tempdb..#tempTable', 'U') is not null DROP TABLE #tempTable


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow