Gibt es eine Open-Source-SQL-Datenbank, die das Konzept der Oracle „Rowid“ Pseudo-Spalte hat?

StackOverflow https://stackoverflow.com/questions/816234

  •  03-07-2019
  •  | 
  •  

Frage

Ich bin mir bewusst, dass MySQL und PostgreSQL [1] Sie nicht haben das Konzept, also bin ich daran interessiert herauszufinden, von dort ist eine Open-Source-SQL-Datenbank, die das Konzept hat.

[1] Es wurde später darauf hingewiesen, dass PostgreSQL die Rowid Pseudo-Spalte hat.

War es hilfreich?

Lösung

PostgreSQL hat dieses Konzept haben.

Siehe hier für eine kurze Liste von Pseudospalten in PostgreSQL , von denen ctid für Sie von Interesse ist:

  

ctid (tuple identifier)

     

Die Kennung, die den physischen Standort des Tupels in der Datenbank beschreibt. Ein Paar von Zahlen, die durch die CTID dargestellt ist:. Die Blocknummer, und Tupelindex innerhalb dieses Blockes

Das ist direkter Analogon von Oracle des rowid.

Wie für MySQL, physischen Standort einer Reihe ist für das vordere Ende nicht zur Verfügung.

In MyISAM, rowid ist nur eine Datei von Anfang versetzt, und das ist, was in dem Index Blättern gespeichert wird.

In InnoDB werden Tabellen nach Design index organized, das heißt, sie immer eine Art von Primärschlüssel hat, und die Indizes über eine InnoDB Tabelle verwenden, die als Zeilenzeiger PRIMARY KEY.

Dies gilt auch für Oracle Tabellen des index organized, für die ein rowid zu einem Block in einer Daten-Datei kein physischer Zeiger ist, sondern eine solche genannt logical ROWID oder UROWID

Wenn Sie eine ROWID von einer INDEX ORGANIZED Tabelle in Oracle auswählen, werden Sie sehen, dass es ein anderes Format (so etwas wie *BAEBwPICwQL+) hat. Dies ist in der Tat ein codierter PRIMARY KEY Wert.

Beachten Sie, dass, wenn Sie keine Spalte als PRIMARY KEY definiert haben, MySQL eine versteckte Surrogat PRIMARY KEY schaffen, über die Sie nie Kontrolle haben.

Aus diesem Grund sollten Sie immer eine Art von PRIMARY KEY in einer InnoDB Tabelle erstellen. Es ist kostenlos, und Sie die Kontrolle über die Säule erhalten

Andere Tipps

, wenn keiner von ihnen das getan hat, dann keine andere tun.

SQLite hat ein auto "ROWID" Spalte erhöht, die Sie ROWID, _rowid oder OID zugreifen können. Wenn Sie einen ganzen Zahl Primärschlüssel definiert als sie aliased werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top