Ver Mensaje Individual
  #11 (permalink)  
Antiguo 25/07/2012, 17:57
rex2002xp
 
Fecha de Ingreso: enero-2006
Mensajes: 10
Antigüedad: 18 años, 3 meses
Puntos: 1
Respuesta: Como Incremento la clave primaria???????

Amigos, veo que el POST es antiguo, pero comento para otros que tal vez andan buscando sobre el uso de campos Identity.

Los campos tipo identity son una excelente solucion, pero deben ser muy cuidadosos al utilizarlos.

La funcionalidad de contador, puede ser muy tentador utilizarlos para identificar el numero unico de un Cliente, o de una factura, o de un comprobante fiscal, etc.

Pero este tipo de campos no fueron creados para ese uso, y explico el porque. Dependiendo del Motor de Base de datos (Sybase, MSSQL, MYSQL, etc), se puede dar casos donde de forma voluntario o involuntarias el motor debe ser reiniciado y la concurrencia de multiples conexiones puede generar casos donde el secuencial de los campos Identity sufren un incremento no esperado, generando gap's o espacios en la numeracion.
Este espacio en la numeracion puede ser faltal, si estamos utilizando el campo para la numeracion de Facturas, o comprobantes fiscales, etc.

El uso correcto de un campo identity es para poder relacionar el registro en especifico con otra tabla, de esta forma si un registro tiene un secuencial de 100, y en otra tabla se relaciona este secuencial siempre sera 100. De esta forma garantizar la integridad de los datos.

Por regla personal, yo solo ocupo campos Identity en tablas que su funcionalidad es de catalogo, y ese numero lo utilizo para relacionarlo en todas las tablas que se ocupe.

Y si necesito generar un secuencial para facturacion, o Id de cliente, prefiero generar un procedimiento almacenado en donde le envio el tipo de secuencial que necesito y me retorna el secuencial que debo insertar en la tabla. De esta forma cuando te toca que restaurar datos, ya no tienen que pelear con los campos Identity, sino que solo restauras, y actualizan la tabla de secuenciales de toda la aplicacion.