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

SELECT MAX sql server

Estas en el tema de SELECT MAX sql server en el foro de SQL Server en Foros del Web. acudo a ustedes ya q tengo inconvenientes con una insercion de datos al consultar el MAX de un campo. Tengo un formulario q al insertar ...
  #1 (permalink)  
Antiguo 29/11/2010, 09:26
 
Fecha de Ingreso: agosto-2006
Mensajes: 6
Antigüedad: 17 años, 7 meses
Puntos: 0
Pregunta SELECT MAX sql server

acudo a ustedes ya q tengo inconvenientes con una insercion de datos al consultar el MAX de un campo.
Tengo un formulario q al insertar los datos debe asignar un ID unico q no puede ser autonumerico, la consulta del MAX la realizo en el momento mismo de la insercion de los datos, el inconveniente q tengo es q la concurrencia de usuarios al formulario es muy alta, y la consulta del MAX me le esta asignando a 2 o 3 usuarios el mismo ID cuando estan realizando el registro en el mismo instante de tiempo, la ayuda q necesito es como poder realizar un bloqueo temporal o asegurar q la asignacion del ID sea unico en el mismo milisegundo con una concurrencia de 300 usuarios??

El SQL es:

'Inserta buscando el codigo de recepcion para el primer registro

SQLcol = "codigo_recepcion, id_area, id_tramite, id_tipo_referencia, numero_referencia, id_tipo_documento, folios, usr_creacion "

SQLval = "SELECT MAX(codigo_recepcion)+1 , "& id_area &", "& id_tramite &", "& id_tipo_referencia &", "& numero_referencia &", "&id_tipo_documento &", "& folios &", "& Session.Contents("USUARIO_ID")


SQLval = SQLval &" FROM contactcenter.GD_AS_plantilla"
SQL = " INSERT INTO contactcenter.GD_AS_plantilla ("& SQLcol &") ("& SQLval &") "


Agradezco la ayuda
  #2 (permalink)  
Antiguo 29/11/2010, 09:42
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: SELECT MAX sql server

Creo que podrias utilizar algun "table hint" como por ejemplo:

TABLOCK
UPDLOCK
o
XLOCK

La verdad no se bien como funcionan pero a lo que dice su descripcion bloquean una tabla....

Saludos!

http://msdn.microsoft.com/en-us/library/ms187373.aspx
  #3 (permalink)  
Antiguo 29/11/2010, 09:46
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: SELECT MAX sql server

A ver, 2 observaciones:
1. Todas esas acciones deberías realizarlas en un stored procedure, no en el lado del cliente.
2. Para lo que necesitas, lo mejor es obtener el Id en el momento de la insercion con un trigger.
Suerte!
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #4 (permalink)  
Antiguo 29/11/2010, 09:56
 
Fecha de Ingreso: agosto-2006
Mensajes: 6
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: SELECT MAX sql server

Pues antes tenia una funcion dentro de la base de datos donde se encuentra la tabla, para asegurar q solo un usuario la usara en el mismo instante, pero el servidor no responde eficientemente y al 2do usuario q intenta acceder o usar la funcion, se le genera un error, para solucionarlo cree la insercion de la manera que describi inicialmente.
Necesito q la consulta sea lo más eficiente y ligera posible, que la asignacion sea muy rapida y me asegure que no haya duplicidad en el ID asignado...

La funcion era algo como esto:

DECLARE @cod_ant bigint

SELECT @cod_ant = MAX(codigo_recepcion)
FROM contactcenter.GD_AS_plantilla

DECLARE @nuevoID bigint

SELECT @nuevoID = ISNULL(@cod_ant, 0) + 1

RETURN @nuevoID

No se si la opcion del trigger sea adecuada, y como seria??

gracias
  #5 (permalink)  
Antiguo 29/11/2010, 10:18
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: SELECT MAX sql server

En el antepenúltimo post de este thread hay un ejemplo que creo te puede servir:
http://www.eggheadcafe.com/software/...t-trigger.aspx
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #6 (permalink)  
Antiguo 29/11/2010, 10:22
 
Fecha de Ingreso: agosto-2006
Mensajes: 6
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: SELECT MAX sql server

Ya lo vi... probare y les cuento...

Muchas gracias

Etiquetas: max, select, server, sql
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 07:17.