Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Clave Primaria Proxima

Estas en el tema de Clave Primaria Proxima en el foro de SQL Server en Foros del Web. Hola!! Necesito hacer un formulario de ingreso de mercaderia en mi aplicacion. Cambie la clave primary que era del tipo Identity por entero solamente, ya ...
  #1 (permalink)  
Antiguo 09/05/2009, 07:08
Avatar de fechasoru  
Fecha de Ingreso: diciembre-2008
Mensajes: 149
Antigüedad: 15 años, 4 meses
Puntos: 0
Clave Primaria Proxima

Hola!! Necesito hacer un formulario de ingreso de mercaderia en mi aplicacion.
Cambie la clave primary que era del tipo Identity por entero solamente, ya que quiero antes de dar de alta en la tabla ingreso cual sera el identificador.
Si usaba Identity tengo que esperar hasta guardar el registro en la base de datos.
Me gustaria saber cual es la mejor consulta para saber cual es el ultimo valor de clave primaria introducida.

La que utilizo es la siguiente nose como andara en su rendimiento.

select max(id_retiro)as ultimo_numero_retiro from Retiro_Obra_Vendedor

despues en mi aplicacion le sumo en 1. que sera el nuevo registro.
  #2 (permalink)  
Antiguo 09/05/2009, 14:49
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: Clave Primaria Proxima

en un sistema multiusuario ese procedimiento no te serviria, porque podrian ganarte el id, es decir, que alguien guarde ese id antes de que tu.

Lo que puedes hacer es obtener el id generado por el identity y regresarlo a la aplicacion en caso de que lo requiera para alguna otra cosa, como guardar registros que dependan de ese id...

algunas funciones para obtener el identity son:

SCOPE_IDENTITY

@@IDENTITY


checalas bien en la ayuda de sql server para ver cual es la que mas te conviene...

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 31/10/2010, 03:22
 
Fecha de Ingreso: octubre-2010
Ubicación: Baja Baviera, Alemania
Mensajes: 13
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Clave Primaria Proxima

Cita:
Iniciado por Andres95 Ver Mensaje
en un sistema multiusuario ese procedimiento no te serviria, porque podrian ganarte el id, es decir, que alguien guarde ese id antes de que tu.

Lo que puedes hacer es obtener el id generado por el identity y regresarlo a la aplicacion en caso de que lo requiera para alguna otra cosa, como guardar registros que dependan de ese id...

algunas funciones para obtener el identity son:

SCOPE_IDENTITY

@@IDENTITY


checalas bien en la ayuda de sql server para ver cual es la que mas te conviene...

Saludos!
Andres, tienes razon esas funciones son realmente utiles pero dependientes de la sesion en la que se trabaje, por ejemplo, si se hace un insert en la sesion n°1 cortas la sesion y en la sesion n°2 y haces una consulta mediante esas funciones se obtiene null, creo que lo mejor y mas seguro para nuestro amigo es identity_current.
Esta es la unica funcion de las que hemos comentado que realmente devuelve siempre lo que queremos sin tener que preocuparnos de nada mas.

identity_current('nombre_de_tabla')
  #4 (permalink)  
Antiguo 02/11/2010, 22:59
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Clave Primaria Proxima

Lo que me intriga, es que un sistema, yo deba saber la clave proxima, ¿para que?
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 03/11/2010, 08:12
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Clave Primaria Proxima

El nombre correcto de la funcion es ident_current(), y esta disponible desde SQL 2000.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:47.