Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/05/2012, 09:26
hermess87
 
Fecha de Ingreso: julio-2007
Mensajes: 178
Antigüedad: 17 años, 4 meses
Puntos: 1
Simular autonumerico sobre varchar evitando colisiones

Hola gente linda, estoy con una duda, quizá puedan darme una mano.

Resulta que necesito ingresar un nuevo registro con un id unico en una tabla (albt), esta misa tabla es consultada por otros desde el mismo sitio hecho en PHP.

Ahora, por cuestiones de diseño (obviamente del programador anterior) no puedo usar autonumericos y ademas el tipo del campo id es VARCHAR y tiene un formato especifico por ejemplo '00215645'

La pregunta es: Como puedo insertar un nuevo registro con el siguiente numero de ese campo, teniendo en cuenta los ceros Y PARA PEOR usando algun tipo de bloqueo para que nadie lo cree antes de que yo termine ?

Por ahora tengo esto:

Código:
BEGIN TRAN BEGIN TRY

 INSERT INTO albt(id)

SELECT     MAX(id) + 1

FROM albt 

COMMIT TRAN END TRY BEGIN CATCH ROLLBACK TRAN END CATCH
Hay varios problemas, en primer lugar el resultado que obtengo es '215646' en lugar de '00215646' como debería ser, y después... que tan seguro es obtener el máximo con MAX() sobre un campo VARCHAR

Bueno como verán estoy un poco preocupado con estos problemas y me seria muy útil su ayuda!

Suerte!