sql >> データベース >  >> RDS >> Sqlserver

SQLServerのローカル一時テーブルとグローバル一時テーブルの違い

    SQL Serverで一時テーブルを作成する場合、ローカルまたはグローバルの一時テーブルにするオプションがあります。

    ローカル一時テーブルとグローバル一時テーブルの主な違いの概要は次のとおりです。

    ネーミング

    • ローカル一時テーブルの名前は、単一の番号記号(#)で始まります )。例:#MyTable
    • ローカル一時テーブルには、システムで生成された数値のサフィックスが名前に追加されます。これはSQLServerによって自動的に生成されます。これにより、複数のセッションで、名前の競合を発生させることなく、同じ名前のローカル一時テーブルを作成できます。ただし、ユーザーはサフィックスを知らなくてもテーブルをクエリできます。
    • グローバル一時テーブルの名前は、二重番号記号(##)で始まります )。例:##MyTable
    • グローバル一時テーブルはではありません ローカル一時テーブルのように接尾辞が追加されます。

    可視性

    • ローカル一時テーブルは、現在のセッションでのみ表示されます。
    • グローバル一時テーブルはすべてのセッションに表示されます。

    寿命

    • ローカル一時テーブルは、現在のセッションの終了時に自動的に削除されます。ストアドプロシージャで作成されたローカル一時テーブルは、ストアドプロシージャが終了すると自動的に削除されます。テーブルは、テーブルを作成したストアドプロシージャによって実行されるネストされたストアドプロシージャから参照できます。テーブルを作成したストアドプロシージャを呼び出したプロセスがテーブルを参照することはできません。
    • グローバル一時テーブルは、テーブルを作成したセッションが終了し、他のすべてのタスクがそれらの参照を停止すると、自動的に削除されます。タスクとテーブルの間の関連付けは、単一のT-SQLステートメントの存続期間中のみ維持されます。したがって、グローバル一時テーブルは、作成セッションの終了時にテーブルをアクティブに参照していた最後のT-SQLステートメントの完了時に削除されます。

    1. SQLiteのNullIf()とIfNull()の違い

    2. 日付/時刻範囲を日ごとに分割するには、OracleSQLが必要です

    3. 演算子は存在しません:integer =? Postgresを使用する場合

    4. JavaでのOracleのRETURNINGINTOの使用法(JDBC、プリペアドステートメント)