Existe-t-il une base de données SQL open source qui utilise le concept de pseudo-colonne «rowid» d’Oracle?

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

  •  03-07-2019
  •  | 
  •  

Question

Je suis conscient que MySQL et PostgreSQL [1] n'ont pas ce concept. Je suis donc intéressé à découvrir une base de données SQL open source qui en contient le concept.

[1] Il a été ultérieurement indiqué que PostgreSQL ™ avait la pseudo-colonne rowid.

Était-ce utile?

La solution

PostgreSQL a ce concept.

Voir ici pour une brève liste des pseudocolonnes dans < code> PostgreSQL , parmi lesquels ctid vous intéresse:

  

ctid (identificateur de tuple)

     

Identificateur décrivant l'emplacement physique du tuple dans la base de données. Une paire de nombres est représentée par le ctid: le numéro de bloc et l’index de tuple dans ce bloc.

C’est l’analogue direct du rowid de Oracle .

Comme pour MySQL , l'emplacement physique d'une ligne n'est pas disponible pour le serveur frontal.

Dans MyISAM , rowid est simplement un fichier décalé par rapport au début, et c'est ce qui est stocké dans les feuilles d'index.

Dans InnoDB , les tables sont indexées par conception, ce qui signifie qu'elles ont toujours une sorte de clé primaire et les index sur un InnoDB table utilise ce PRIMARY KEY en tant que pointeur de ligne.

Ceci est également vrai pour les tables index organisées de Oracle , pour lesquelles un rowid n'est pas un pointeur physique vers un bloc dans un datafile, mais plutôt un tel ROWID logique , ou UROWID

Si vous sélectionnez un ROWID dans une table INDEX ORGANIZED dans Oracle , vous verrez qu'il a un format différent (comme < code> * BAEBwPICwQL + ). Il s’agit en fait d’une valeur PRIMARY KEY codée.

Notez que si vous n'avez défini aucune colonne en tant que PRIMARY KEY , MySQL créera un substitut caché PRIMARY KEY sur lequel vous allez ne jamais avoir aucun contrôle.

C'est pourquoi vous devriez toujours créer une sorte de PRIMARY KEY dans une table InnoDB : c'est gratuit et vous obtenez le contrôle de la colonne.

Autres conseils

si aucun d'entre eux n'a fait cela, aucun autre ne le fera.

SQLite a un auto-incrémenté "ROWID". colonne à laquelle vous pouvez accéder à l'aide de ROWID, _ROWID ou OID. Si vous définissez une clé primaire entière, elle sera aliasée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top