私は #temp が一時的であることを知っています。特定のセッションのみに有効なテーブル。しかし、2 つの異なるセッションで #temp を定義し、それらを同時に実行すると、競合が発生します。そうでない場合、これらのテーブルが実際にどのようにメモリに格納されているか。そして、それは ##Temp とどう違うのですか?????
質問する
82 次
2 に答える
2
# が 1 つだけの一時テーブルは「ローカル」であり、## が 2 つある一時テーブルは「グローバル」です。
ローカルのものは、それらを定義するストアド プロシージャが完了すると、スコープから除外されます。
グローバルなものは、他のユーザー、別のストアド プロシージャからの同じユーザー、または同じプロシージャの複数の呼び出しによって使用できます。これらは、それらを参照していた最後のユーザーがそれらを参照しなくなった後、つまり最後のストアド プロシージャが完了した後にのみ削除されます。
すべてが tempdb データベースに格納されます。「記憶」にはありません。
于 2013-10-03T04:49:29.813 に答える
1
tempdbの sysobjects テーブルに格納される一時テーブルの完全な名前は、CREATE TABLE ステートメントで指定されたテーブル名と、システムによって生成された数値サフィックスで構成されます。
したがって、tempdb に格納されます。
一時テーブルとテーブル変数が TempDB データベースに作成されます
于 2013-10-03T04:36:35.937 に答える