PDA

Ver la versión completa : Problema recurrente SQL: Dobles consultas al necesitar ID del registro a insertar



Estopero
19/10/2010, 15:54
Bien es un problema que se me presenta muy a menudo, y que yo resuelvo haciendo dos consultas, pero me gustaría saber si os habéis enfrentado a esto alguna vez o como atajaríais el problema.

Al subir una imagen a un servidor inserto a la vez un registro en base de datos con cierta información sobre la imagen, y además quiero asegurarme de que esa imagen tiene un nombre de fichero único, para ello lo que hago es insertar el registro en base de datos, y una vez he insertado el registro renombro la imagen con su ID única como prefijo del fichero 456_fichero.jpg, luego tengo que volver a actualizar el registro insertado con el verdadero nombre del fichero.


Insertar registro con info de la imagen y obtener ID insertada (INSERT)
Guardo la imagen en el servidor con la ID delante del nombre original
Actualizo el registro en Base de datos con el nuevo nombre de la imagen (UPDATE)


Alguna forma más eficiente? se os ocurren ideas limpias para asegurar un nombre único a una imagen?

Saludos!

IronArthur
19/10/2010, 15:59
Igual no es la forma más bonita pero yo suelo hacer:


Guardo la imagen con la función time().jpg/gif... y me guardo el nombre original de la imagen.
Guardo en la base de datos una tupla con ID(autonum), nombreorig, nombrefichero( 123456789.jpg), resto de datos.


Salu2

nandove
19/10/2010, 16:22
Bien es un problema que se me presenta muy a menudo, y que yo resuelvo haciendo dos consultas, pero me gustaría saber si os habéis enfrentado a esto alguna vez o como atajaríais el problema.

Al subir una imagen a un servidor inserto a la vez un registro en base de datos con cierta información sobre la imagen, y además quiero asegurarme de que esa imagen tiene un nombre de fichero único, para ello lo que hago es insertar el registro en base de datos, y una vez he insertado el registro renombro la imagen con su ID única como prefijo del fichero 456_fichero.jpg, luego tengo que volver a actualizar el registro insertado con el verdadero nombre del fichero.


Insertar registro con info de la imagen y obtener ID insertada (INSERT)
Guardo la imagen con la ID delante del nombre original
Actualizo el registro en Base de datos con el nuevo nombre de la imagen (UPDATE)


Alguna forma más eficiente? se os ocurren ideas limpias para asegurar un nombre único a una imagen?

Saludos!

¿A ver que te entienda, haces el insert para luego saber cual es el ID único que le ha dado el sql, renombrando la imagen y actualizando el registro?

Si quieres un IDunico y no quieres tener que hacer un select posterior a la creación del registro, búscate un ID único fuera del sql ;) usa la fecha completa del sistema con milisegundos incluidos, ejemplo: 20101019164055234

ese numero único saldria de juntar año+mes(*)+dia(*)+hora+segundos+milisegundos
*si la cifra de dia o mes es de un solo dígito añade un 0 y con esto consigues que puedas hacer una ordenación numérica o alfanumérica por ese campo en sql, siempre es útil.

una vez obtenido el "id único" a través de la hora, fecha y milisegundo, usalo para hacer un único insert y te olvidas ;)


Edit: dejé a medias el mensaje, y me llamó mi jefe y cuando lo terminé de poner IronArthur ya habia posteado la solución :p