2016-10-29 3 views
0

Ich habe API schreiben mit Spring JPA und Postgresql.Wie wird in PostgreSQL aktualisiert, ohne die Zeilennummer zu beeinflussen?

Nach Update-Anweisung Es betrifft die Zeilennummer des Datensatzes.

Before Update

After Update id 2

Die Reihenfolge der Aufzeichnung 2, die mit der letzten Bestellung gehen aktualisiert wird.

Ich will nicht die Zeilennummer

ändern, wie ich ohne Änderung der Zeilennummer aktualisieren?

+0

Und bitte beraten Sie uns, wie jemand hier wissen kann, was jede dieser Spalten in der Entity-Klasse zugeordnet ist, wenn Sie uns nicht sagen, was die Klasse ist? Während Sie dies erwähnen, können Sie uns vielleicht sagen, WAS Sie im Objekt aktualisieren und welche SQL von Ihrem JPA-Provider aufgerufen wird. –

+3

Verlassen Sie sich niemals auf die implizite Reihenfolge der Zeilen. Wenn Sie Zeilen in einer bestimmten Reihenfolge benötigen, fügen Sie in Ihrer Abfrage eine 'order by'-Klausel hinzu. –

+1

Gefunden diese: http://www.sql-workbench.net/not-sorted/ –

Antwort

2

Eine Datenbanktabelle ist eine ungeordnete Menge von Tupeln (auch als Beziehung bekannt), so können Sie in der Größenordnung von zurückgegebenen Zeilen nicht darauf verlassen, von einem SELECT * FROM tablename.

Sie müssen eine Bestellung mit einer ORDER BY Klausel erzwingen, wenn Sie es brauchen.

Der interne Grund, warum sich der Speicherort einer Zeile nach einer Aktualisierung ändert, ist, dass PostgreSQL tatsächlich eine neue Version der Zeile schreibt, die in diesem Fall am Ende angehängt wird. Aber Sie können sich auch nicht darauf verlassen: Wenn in der Mitte der Tabelle freier Platz ist, kann dort die neue Zeilenversion hinzugefügt werden.

Verwandte Themen