Esiste un database SQL open source che ha il concetto di pseudo-colonna "rowid" di Oracle?

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

  •  03-07-2019
  •  | 
  •  

Domanda

Sono consapevole che MySQL e PostgreSQL [1] non hanno non questo concetto, quindi sono interessato a scoprire che esiste un database SQL open source che ha il concetto.

[1] In seguito è stato sottolineato che PostgreSQL ha la pseudo-colonna rowid.

È stato utile?

Soluzione

PostgreSQL ha questo concetto.

Vedi qui per un breve elenco di pseudocolonne in < code> PostgreSQL , fuori dal quale ctid ti interessa:

  

ctid (identificatore tupla)

     

L'identificatore che descrive la posizione fisica della tupla all'interno del database. Una coppia di numeri è rappresentata dal ctid: il numero di blocco e l'indice di tupla all'interno di quel blocco.

Questo è l'analogo diretto del Oracle del rowid .

Come per MySQL , la posizione fisica di una riga non è disponibile per il front-end.

In MyISAM , rowid è solo un offset di file dall'inizio, ed è quello che è memorizzato nelle foglie dell'indice.

In InnoDB , le tabelle sono organizzate per indice in base alla progettazione, ciò significa che hanno sempre una sorta di chiave primaria e gli indici su un InnoDB usa quel PRIMARY KEY come puntatore di riga.

Ciò vale anche per le tabelle Oracle organizzate organizzate , per le quali un rowid non è un puntatore fisico a un blocco in un file di dati, ma piuttosto un tale logico ROWID o UROWID

Se selezioni un ROWID da una tabella INDEX ORGANIZED in Oracle , vedrai che ha un formato diverso (qualcosa come < code> * BAEBwPICwQL + ). Questo è in realtà un valore codificato PRIMARY KEY .

Nota che se non hai definito alcuna colonna come PRIMARY KEY , MySQL creerà un surrogato nascosto PRIMARY KEY su cui dovrai non avere mai alcun controllo.

Ecco perché dovresti sempre creare una sorta di PRIMARY KEY in una tabella InnoDB : è gratuito e ottieni il controllo sulla colonna.

Altri suggerimenti

se nessuno dei due lo ha fatto, allora nessun altro lo fa.

SQLite ha un "ROWID" incrementato automaticamente colonna a cui è possibile accedere utilizzando ROWID, _ROWID o OID. Se si definisce una chiave primaria intera di quella verrà aliasata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top