Hallo, ich möchte alle Daten in meinen postgresql-Tabellen löschen, aber nicht die Tabelle selbst. Wie könnte ich das machen?
postgresql
vo1d
quelle
quelle
Antworten:
Verwenden Sie den
TRUNCATE TABLE
Befehl.quelle
Der Inhalt der Tabelle / Tabellen in der PostgreSQL-Datenbank kann auf verschiedene Arten gelöscht werden.
Löschen von Tabelleninhalten mit SQL:
Inhalt einer Tabelle löschen:
Inhalt aller benannten Tabellen löschen:
Löschen von Inhalten benannter Tabellen und Tabellen, die darauf verweisen (ich werde es später in dieser Antwort näher erläutern):
Löschen von Tabelleninhalten mit pgAdmin:
Inhalt einer Tabelle löschen:
Löschen von Tabelleninhalten und darauf verweisenden Tabellen:
Unterschied zwischen Löschen und Abschneiden:
Aus der Dokumentation:
Arbeiten mit Tabellen, auf die aus anderen Tabellen verwiesen wird:
Wenn Sie eine Datenbank mit mehr als einer Tabelle haben, haben die Tabellen wahrscheinlich eine Beziehung. Als Beispiel gibt es drei Tabellen:
Und einige vorbereitete Daten für diese Tabellen:
Tabellenbestellungen verweisen auf Tabellenkunden und Tabellenloyalitätskarten verweisen auf Tabellenkunden. Wenn Sie versuchen, TRUNCATE / DELETE FROM aus der Tabelle zu entfernen, auf die von anderen Tabellen verwiesen wird (die andere Tabelle hat eine Fremdschlüsseleinschränkung für die benannte Tabelle), wird eine Fehlermeldung angezeigt. Um Inhalte aus allen drei Tabellen zu löschen, müssen Sie alle diese Tabellen benennen (die Reihenfolge ist nicht wichtig).
oder nur die Tabelle, auf die mit dem Schlüsselwort CASCADE verwiesen wird (Sie können mehr Tabellen als nur eine benennen)
Gleiches gilt für pgAdmin. Klicken Sie mit der rechten Maustaste auf die Kundentabelle und wählen Sie Kaskadiert abschneiden.
quelle
TRUNCATE
ist Teil von ANSI SQL und wird in allen DBMS unterstützt. Ich folgte dem Link und das Dokument erwähnt nichts über Erweiterungen. Vielleicht ist der Link falsch oder veraltet?Bei kleinen Tischen
DELETE
ist dies oft schneller und erfordert weniger aggressive Verriegelung (bei starker gleichzeitiger Belastung):Ohne
WHERE
Bedingung.Für mittlere oder größere Tabellen gehen Sie mit
TRUNCATE tbl
, wie @Greg gepostet.quelle