Skróć (SQL)
W języku SQL instrukcja TRUNCATE TABLE
jest operacją języka definicji danych (DDL), która oznacza zakresy tabeli do cofnięcia alokacji (puste do ponownego wykorzystania). Wynik tej operacji powoduje szybkie usunięcie wszystkich danych z tabeli , zwykle z pominięciem wielu mechanizmów wymuszających integralność. Został oficjalnie wprowadzony w SQL:2008 jako opcjonalna funkcja F200, „instrukcja TRUNCATE TABLE”.
TRUNCATE TABLE usuwa wszystkie wiersze z tabeli, ale struktura tabeli i jej kolumny, ograniczenia, indeksy itd. pozostają niezmienione. Aby usunąć definicję tabeli oprócz jej danych, użyj DROP TABLE .
Instrukcja TRUNCATE TABLE mytable
jest logicznie (choć nie fizycznie) równoważna instrukcji DELETE FROM mytable
(bez klauzuli WHERE
). Następujące cechy odróżniają TRUNCATE TABLE
od DELETE
:
- W Oracle Database ,
TRUNCATE
jest niejawnie poprzedzone i następujące po operacji zatwierdzenia . (Może tak być również w przypadku MySQL , gdy używany jest transakcyjny silnik pamięci). - Zazwyczaj
TRUNCATE TABLE
szybko usuwa wszystkie rekordy w tabeli, zwalniając strony danych używane przez tabelę. Zmniejsza to obciążenie zasobów związane z rejestrowaniem usunięć, a także liczbę uzyskanych blokad . Rekordów usuniętych w ten sposób nie można przywrócić w operacji wycofywania. Dwa godne uwagi wyjątki od tej reguły to implementacje znalezione w PostgreSQL i Microsoft SQL Server , z których oba umożliwiają transakcyjne zatwierdzanie lub wycofywanie instrukcjiTRUNCATE TABLE .
- Nie można określić klauzuli
WHERE
w instrukcjiTRUNCATE TABLE
. -
TRUNCATE TABLE
, gdy klucz obcy odwołuje się do tabeli, która ma zostać obcięta, ponieważ instrukcjeTRUNCATE TABLE
nie uruchamiają wyzwalaczy . Może to spowodować niespójność danych, ponieważON DELETE
/ON UPDATE
nie uruchamiają się. - W niektórych systemach komputerowych
TRUNCATE TABLE
resetuje liczbę kolumn Tożsamości z powrotem do źródła tożsamości . - W programie Microsoft SQL Server 2000 i nowszych wersjach w trybie pełnego odzyskiwania każda zmiana w bazie danych jest rejestrowana, więc instrukcji
TRUNCATE TABLE
można używać w przypadku tabel związanych z wysyłaniem dziennika .