0

私は #temp が一時的であることを知っています。特定のセッションのみに有効なテーブル。しかし、2 つの異なるセッションで #temp を定義し、それらを同時に実行すると、競合が発生します。そうでない場合、これらのテーブルが実際にどのようにメモリに格納されているか。そして、それは ##Temp とどう違うのですか?????

4

2 に答える 2

2

# が 1 つだけの一時テーブルは「ローカル」であり、## が 2 つある一時テーブルは「グローバル」です。

ローカルのものは、それらを定義するストアド プロシージャが完了すると、スコープから除外されます。

グローバルなものは、他のユーザー、別のストアド プロシージャからの同じユーザー、または同じプロシージャの複数の呼び出しによって使用できます。これらは、それらを参照していた最後のユーザーがそれらを参照しなくなった後、つまり最後のストアド プロシージャが完了した後にのみ削除されます。

すべてが tempdb データベースに格納されます。「記憶」にはありません。

于 2013-10-03T04:49:29.813 に答える
1

CREATE TABLEから

tempdbの sysobjects テーブルに格納される一時テーブルの完全な名前は、CREATE TABLE ステートメントで指定されたテーブル名と、システムによって生成された数値サフィックスで構成されます。

したがって、tempdb に格納されます。

また、SQL Server の一時テーブルから

一時テーブルとテーブル変数が TempDB データベースに作成されます

于 2013-10-03T04:36:35.937 に答える