MySQL: ¿hay algo así como un identificador de registro interno para cada registro de una tabla de MySQL?

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

  •  20-09-2019
  •  | 
  •  

Pregunta

Estoy construyendo una aplicación de hoja de cálculo usando MySQL como el almacenamiento, lo que necesito para identificar los registros que se van a actualizar en el cliente con el fin de guardar los cambios.

¿Hay alguna manera, como una especie de "identificador de registro interno" (interno como en el utilizado por el motor de base de datos en sí), para identificar de forma única los registros, por lo que voy a ser capaz de actualizar la correcta?

Desde luego, una consulta SELECT puede ser utilizado para identificar el registro, incluyendo todos los campos de la tabla, pero, obviamente, que tiene el inconveniente de devolver varios registros en la mayoría de las situaciones.

IMPORTANTE: la aplicación de hoja de cálculo tiene como objetivo trabajar en cualquier mesa, incluso los tremendamente mal diseñada, sin ningún tipo de llaves, así soluciones como "definir un campo con un índice único y trabajar con eso" no son una opción, estructura de la tabla puede ser extremadamente variable y no debe ser importante.

Muchas gracias.

¿Fue útil?

Solución

AFAIK no existe tal identificador único interno (por ejemplo, un simple fila ID).

puede tal vez ser capaz de ejecutar un SELECT sin ningún tipo de clasificación y luego obtener la fila enésima utilizando un LIMIT. ¿En qué condiciones que sea fiable y seguro de usar, una mySQL Guru necesitaría para confirmar. Probablemente nunca lo es.

Trate de jugar con phpMyAdmin , la interfaz web de MySQL. Está diseñado para hacer frente a las tablas mal diseñados sin llaves. Si no recuerdo mal, se utiliza todos columnas que puede hacerse con en estos casos:

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

y así sucesivamente.

Eso no es del todo seguro de duplicados o bien, por supuesto.

La única idea que viene a la mente es agregar una columna de clave en tiempo de ejecución, y para quitarlo cuando se realiza la aplicación. Es una idea que inducen ganso bache, pero tal vez mejor que nada.

Otros consejos

MySQL tiene "auto-incrementales" columnas numéricas que se pueden agregar e incluso definir como clave principal, que le daría a un único ID de registro generado automáticamente por la base de datos. Se puede consultar el último ID de registro que acaba de insertar con select LAST_INSERT_ID()

ejemplo de la documentación oficial de MySQL aquí

A mi conocimiento, MySQL carece de la característica implícita ROWID como se ve en Oracle (y existe en otros motores con su propia sintaxis). Vas a tener que crear su propia campo AUTO_INCREMENT .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top