Beibehalten der Zeilenlöschreihenfolge in PostgreSQL ohne Primärschlüssel
In MySQL ist die Abfrage DELETE FROM logtable ORDER BY timestamp LIMIT 10; Entfernt mühelos eine angegebene Anzahl von Zeilen aus einer Tabelle und behält dabei die Sortierreihenfolge bei. PostgreSQL stellt jedoch eine Herausforderung dar, da es in seiner Löschsyntax Reihenfolgen oder Einschränkungen verbietet, insbesondere wenn der Tabelle ein Primärschlüssel fehlt.
Überwindung der Primärschlüsselbeschränkung
Zur Umgehung Um dieses Hindernis zu überwinden, bietet PostgreSQL eine Lösung an, die die ctid nutzt. Die ctid stellt den physischen Speicherort jeder Zeile innerhalb der Tabelle dar. Obwohl es sich nicht um eine permanente Kennung handelt, ist sie aufgrund ihrer Einzigartigkeit pro Tabelle eine praktikable Alternative zum Löschen von Zeilen.
Verwendung der ctid
Die ctid kann zum Löschen einer vorgegebenen Kennung genutzt werden Anzahl der sortierten Zeilen mit der folgenden Abfrage:
DELETE FROM ONLY logtable WHERE ctid IN ( SELECT ctid FROM logtable ORDER BY timestamp LIMIT 10 );
DELETE FROM ONLY schränkt den Löschvorgang ein auf die angegebene Tabelle, um versehentliches Löschen aus geerbten Tabellen zu verhindern.
Handhabung von Partitionen und Sicherheitseinstellungen
Wenn die Protokolltabelle partitioniert ist, müssen Sie das Tableoid (Tabellen-ID) einschließen. in der Abfrage, um zu verhindern, dass Löschvorgänge in mehreren Partitionen erfolgen.
Wenn außerdem Sicherheitsrichtlinien implementiert sind, müssen Sie dies möglicherweise tun Passen Sie die Abfrage an, um entsprechende Zugriffsrechte sicherzustellen.
Zusätzlicher Hinweis
Es ist wichtig zu bedenken, dass sich die CTID ändern kann, wenn Zeilen durch VACUUM FULL aktualisiert oder verschoben werden. Wenn Sie ctid als langfristige Zeilenkennung verwenden möchten, beachten Sie diese Einschränkung.
Das obige ist der detaillierte Inhalt vonWie kann ich Zeilen in PostgreSQL in einer bestimmten Reihenfolge ohne Primärschlüssel löschen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!