Witam Chcę usunąć wszystkie dane z moich tabel postgresql, ale nie samą tabelę. Jak mogłem to zrobić?
postgresql
vo1d
źródło
źródło
Odpowiedzi:
Użyj
TRUNCATE TABLE
polecenia.źródło
Zawartość tabeli / tabel w bazie danych PostgreSQL można usunąć na kilka sposobów.
Usuwanie zawartości tabeli za pomocą sql:
Usuwanie zawartości jednej tabeli:
Usuwanie zawartości wszystkich nazwanych tabel:
Usuwanie zawartości nazwanych tabel i tabel, które się do nich odnoszą (wyjaśnię to bardziej szczegółowo w dalszej części odpowiedzi):
Usuwanie zawartości tabeli za pomocą pgAdmin:
Usuwanie zawartości jednej tabeli:
Usuwanie zawartości tabeli i tabel, które się do niej odwołują:
Różnica między usuwaniem a obcinaniem:
Z dokumentacji:
Praca z tabelą, do której istnieją odniesienia z innej tabeli:
Jeśli masz bazę danych, która ma więcej niż jedną tabelę, prawdopodobnie istnieje związek między tabelami. Jako przykład są trzy tabele:
I kilka przygotowanych danych do tych tabel:
Zamówienia w tabeli odwołują się do klientów w tabeli, a karty lojalnościowe do tabeli odwołują się do klientów w tabeli. Podczas próby TRUNCATE / DELETE FROM tabeli, do której odwołują się inne tabele (inne tabele mają ograniczenie klucza obcego do wymienionej tabeli), pojawia się błąd. Aby usunąć zawartość ze wszystkich trzech tabel, musisz nazwać wszystkie te tabele (kolejność nie jest ważna)
lub po prostu tabela, do której odwołuje się słowo kluczowe CASCADE (możesz nazwać więcej tabel niż tylko jedna)
To samo dotyczy pgAdmin. Kliknij prawym przyciskiem myszy tabelę klientów i wybierz Obetnij kaskadowo.
źródło
TRUNCATE
jest częścią ANSI SQL i jest obsługiwany we wszystkich DBMS. Skorzystałem z linku i dokument nie wspomina o rozszerzeniach. Być może link jest nieprawidłowy lub nieaktualny?W przypadku małych stołów
DELETE
jest często szybszy i wymaga mniej agresywnego blokowania (przy dużym obciążeniu równoległym):Bez
WHERE
warunku.W przypadku średnich lub większych stołów, użyj
TRUNCATE tbl
, jak opublikowano @Greg.źródło