Existe um banco de dados SQL de código aberto que tem o conceito de “rowid” pseudo-coluna da Oracle?

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

  •  03-07-2019
  •  | 
  •  

Pergunta

Estou ciente de que o MySQL e PostgreSQL [1] fazer não tem esse conceito, por isso estou interessado em saber de que há um banco de dados SQL de código aberto que tem o conceito.

[1] Mais tarde, foi apontado que o PostgreSQL tem a pseudo-coluna rowid.

Foi útil?

Solução

PostgreSQL tem este conceito.

aqui para uma lista breve de pseudocolunas em PostgreSQL , dos quais ctid é de seu interesse:

ctid (tuple identifier)

O identificador que descreve a localização física da tupla dentro do banco de dados. Um par de números são representados pela ctid:. O número do bloco, e o índice de tupla dentro desse bloco

Isso é análogo direto de Oracle de rowid.

Como para MySQL, localização física de uma linha não está disponível para o front-end.

Em MyISAM, rowid é apenas um arquivo deslocamento a partir do início, e é isso que é armazenada nas folhas de índice.

Em InnoDB, mesas são index organized pelo projeto, isso significa que eles sempre têm algum tipo de uma chave primária, e os índices sobre o uso da tabela InnoDB que PRIMARY KEY como um ponteiro linha.

Isto também é verdade para as tabelas Oracle de index organized, para o qual um rowid não é um ponteiro física para um bloco em um arquivo de dados, mas sim uma tal chamada logical ROWID, ou UROWID

Se você selecionar um ROWID de uma tabela INDEX ORGANIZED em Oracle, você vai ver que ele tem um formato diferente (algo como *BAEBwPICwQL+). Este é de facto um valor PRIMARY KEY codificado.

Note que se você não tiver definido qualquer coluna como um PRIMARY KEY, MySQL criará um PRIMARY KEY substituto escondida sobre as quais você nunca terá qualquer controle.

É por isso que você deve sempre criar algum tipo de PRIMARY KEY em uma tabela InnoDB:. É grátis, e você terá controle sobre a coluna

Outras dicas

Se nenhum deles ter feito isso, então há outros fazem.

SQLite tem uma auto incrementado coluna "ROWID", que você pode acessar usando ROWID, _rowid, ou OID. Se você definir uma chave primária inteiro do que eles vão ser alias.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top