Szukaj…


Wprowadzenie

Instrukcja TRUNCATE usuwa wszystkie dane z tabeli. Jest to podobne do DELETE bez filtra, ale w zależności od oprogramowania bazy danych ma pewne ograniczenia i optymalizacje.

Składnia

  • TRUNCATE TABLE nazwa_tabeli;

Uwagi

TRUNCATE to polecenie DDL (Data Definition Language) i jako takie istnieją znaczne różnice między nim a DELETE (Data Manipulation Language, DML, polecenie). Chociaż TRUNCATE może być sposobem na szybkie usunięcie dużej ilości rekordów z bazy danych, różnice te należy zrozumieć, aby zdecydować, czy użycie polecenia TRUNCATE jest odpowiednie w konkretnej sytuacji.

  • TRUNCATE to operacja strony danych. Dlatego wyzwalacze DML (ON DELETE) powiązane z tabelą nie będą uruchamiane podczas wykonywania operacji TRUNCATE. Pozwoli to zaoszczędzić dużo czasu na masowe operacje usuwania, jednak może być konieczne ręczne usunięcie powiązanych danych.
  • TRUNCATE zwolni miejsce na dysku używane przez usunięte wiersze, DELETE zwolni miejsce
  • Jeśli tabela, która ma zostać obcięta, używa kolumn tożsamości (MS SQL Server), wówczas seed jest resetowany poleceniem TRUNCATE. Może to powodować problemy z integralnością referencyjną
  • W zależności od ról zabezpieczeń i używanego wariantu SQL, możesz nie mieć niezbędnych uprawnień do wykonania polecenia TRUNCATE

Usuwanie wszystkich wierszy z tabeli pracowników

TRUNCATE TABLE Employee;

Korzystanie ze skróconej tabeli jest często lepsze niż użycie DELETE TABLE, ponieważ ignoruje wszystkie indeksy i wyzwalacze i po prostu usuwa wszystko.

Usuń tabelę to operacja oparta na wierszach, co oznacza, że każdy wiersz jest usuwany. Obcięta tabela to operacja strony danych, cała strona danych zostaje ponownie przydzielona. Jeśli masz tabelę z milionem wierszy, skrócenie tabeli będzie znacznie szybsze niż użycie instrukcji usuwania tabeli.

Chociaż możemy usunąć określone wiersze za pomocą DELETE, nie możemy TRUNCATE określonych wierszy, możemy TRUNCATE tylko wszystkie rekordy jednocześnie. Usunięcie wszystkich wierszy, a następnie wstawienie nowego rekordu spowoduje kontynuowanie dodawania Auto-przyrostowej wartości klucza podstawowego z poprzednio wstawionej wartości, gdzie podobnie jak w Obcinanie, wartość Auto-przyrostowej wartości klucza podstawowego również zostanie zresetowana i rozpocznie się od 1.

Pamiętaj, że podczas obcinania tabeli nie mogą być obecne żadne klucze obce , w przeciwnym razie wystąpi błąd.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow