MySQL:existe algo como um registro interno identificador para cada registro em uma tabela MySQL?

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

  •  20-09-2019
  •  | 
  •  

Pergunta

Estou construindo uma planilha do aplicativo usando o MySQL como de armazenamento, o que eu preciso para identificar registros que estão sendo atualizados no lado do cliente, a fim de salvar as alterações.

Existe um caminho, como uma espécie de "registro interno identificador" (interno como no utilizado pelo mecanismo de banco de dados em si), para identificar registros, de modo que eu vou ser capaz de atualizar a correta?

Certamente, uma query SELECT pode ser usado para identificar o registro, incluindo todos os campos na tabela, mas, obviamente, tem a desvantagem de o retorno de vários registros, na maioria das situações.

IMPORTANTE:a planilha de app tem como objectivo trabalhar em QUALQUER tabela, mesmo aqueles tremendamente mal concebidos, sem quaisquer chaves, para que soluções, tais como "definir um campo com um índice EXCLUSIVO e trabalhar com o que" não são uma opção, a estrutura de uma tabela pode ser extremamente variável e não importa.

Muito obrigado.

Foi útil?

Solução

AFAIK não como único identificador interno (digamos, um simples IDENTIFICAÇÃO de linha) existe.

Você pode talvez ser capaz de executar um SELECT sem qualquer ordenação e, em seguida, obter o n-ī esima linha usando um LIMIT.Em que condições, de que é confiável e seguro para uso, o mySQL é um Guru precisaria confirmar.Ele, provavelmente, nunca é.

Tente brincar com phpMyAdmin, o frontend web para o mySQL.Ele é projetado para lidar com o mal concebidos tabelas sem chaves.Se eu me lembro corretamente, ele usa todos colunas pode se apossar de, em tais casos:

UPDATE xyz set a = b WHERE 'fieldname'  = 'value' 
                       AND 'fieldname2' = 'value2' 
                       AND 'fieldname3' = 'value3' 
                       LIMIT 0,1;

e assim por diante.

Que não é inteiramente duplicado-seguro, é claro.

A única idéia que vem à minha mente é adicionar uma coluna de chave em tempo de execução, e para removê-lo quando o aplicativo é feito.É um ganso-bump-indução de idéia, mas talvez melhor do que nada.

Outras dicas

O MySQL possui colunas numéricas de "incremento automático" que você pode adicionar e até definir como uma chave primária, que forneceria um ID de registro exclusivo gerado automaticamente pelo banco de dados. Você pode consultar o último id de registro com o qual você acabou de inserir select LAST_INSERT_ID()

Exemplo da documentação oficial do MySQL aqui

Que eu saiba, o MySQL não possui o recurso de Rowid implícito, como visto no Oracle (e existe em outros motores com sua própria sintaxe). Você terá que criar o seu próprio AUTO_INCREMENT campo.

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