Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Въведение във временните таблици в SQL Server

В SQL Server, временна таблица е определен вид таблица, която съществува, докато не излезе извън обхвата (освен ако изрично не е изпусната).

Това е различно от обикновена (постоянна) таблица, където обикновената таблица съществува постоянно във вашата база данни, докато не я изхвърлите изрично.

Предимства на временните таблици

Временните таблици могат да бъдат полезни в моменти, когато трябва да изпълните множество заявки срещу подмножество от по-голям набор от резултати. Можете да използвате SELECT... INTO с WHERE клауза за поставяне на подмножеството от данни във временна таблица. След това можете да изпълнявате заявки към тази временна таблица. Това ви спестява от постоянното филтриране на данни от по-големия набор от резултати, когато правите множество заявки.

Временните таблици могат да бъдат полезни и от гледна точка на разрешенията. Ако трябва да работите с данни от постоянна таблица, но нямате достатъчно разрешения, за да извършите всички необходими операции, можете да копирате тези данни във временна таблица (ако приемем, че имате достъп за четене) и да направите всичко, което трябва да направите .

Могат да се използват и временни таблици, ако нямате разрешение за създаване на (постоянна) таблица в текущата база данни.

Друг удобен аспект на временните таблици е, че можете да ги използвате за изпълнение на бързи ad-hoc заявки, когато изпълнявате тест, демонстрирате концепция и т.н., без да се притеснявате, че ще оставите следа от постоянни таблици, които сте забравили да пуснете.

TempDB

Временните таблици се създават в TempDB база данни. Това е системна база данни, която съхранява временни потребителски обекти като временни таблици и индекси, временни съхранени процедури, таблични променливи, таблици, върнати във функции с таблично стойности, и курсори. Той също така съхранява вътрешни обекти, създадени от двигателя на базата данни, и съхранява версии.

Всеки потребител може да създава временни таблици в TempDB . Не е необходимо да конфигурирате специални разрешения за TempDB достъп.

Синтаксис

Временните таблици се създават с помощта на същия синтаксис като обикновените таблици. Разликата е, че временните таблици са с префикс с един или два знака за числа (# ):

  • Локалните временни таблици са с префикс с едно число (напр. #table_name )
  • Глобалните временни таблици са с префикс с двоен знак за число (напр. ##table_name )

Пример за създаване на локален временна таблица:

CREATE TABLE #LocalTableName (
    col1 int PRIMARY KEY,
    col2 varchar(255)
);

Пример за създаване на глобален временна таблица:

CREATE TABLE ##GlobalTableName (
    col1 int PRIMARY KEY,
    col2 varchar(255)
);

Локалните временни таблици са видими само в текущата сесия, а глобалните временни таблици са видими за всички сесии.

Колко време трае една временна таблица?

Временните таблици се отхвърлят автоматично, когато излязат извън обхвата.

Можете също така изрично да пуснете временна таблица, като използвате DROP TABLE .

Точно кога временна таблица се отпада автоматично зависи от това дали временната таблица е локална или глобална и дали е създадена в съхранена процедура или не.

  • Местни :Локална временна таблица, създадена в съхранена процедура, се отпада автоматично, когато съхранената процедура приключи. Таблицата може да бъде препращана от всякакви вложени съхранени процедури, изпълнявани от съхранената процедура, която е създала таблицата. Таблицата не може да бъде препращана от процеса, който е извикал съхранената процедура, създала таблицата.

    Всички останали локални временни таблици се премахват автоматично в края на текущата сесия.

  • Глобално :Глобалните временни таблици се отпадат автоматично, когато сесията, създала таблицата, приключи и всички други задачи спрат да ги препращат. Връзката между задача и таблица се поддържа само за живота на един T-SQL израз. Това означава, че глобална временна таблица е отпаднала при завършване на последния израз на T-SQL, който активно е препращал към таблицата, когато сесията за създаване е приключила.

Схема

Всички временни таблици се създават в dbo схема. Ако изрично посочите различна схема, тя се игнорира.

Външни ключове

Ограниченията FOREIGN KEY не се налагат върху временните таблици. Ако посочите външен ключ, таблицата все още се създава, само без външен ключ. Ще бъде върнато съобщение, което ви уведомява за това.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на StringWriter за XML сериализация

  2. Как да пуснете колона с ограничение в SQL Server

  3. Системни бази данни на SQL Server – поддръжка на Tempdb

  4. Как да вмъкна таблица с данни в таблица на база данни на SQL Server?

  5. newid() вътре в sql сървърната функция