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

Problemas con los id para generarlos correativos

Estas en el tema de Problemas con los id para generarlos correativos en el foro de SQL Server en Foros del Web. quiero generar correlativos con el id utilizando procedimientos almacenados, para insertar los campos y genere automaticamente el correlativo. Pero no me funciona. Agradeceria su ayuda ...
  #1 (permalink)  
Antiguo 19/07/2011, 08:35
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Problemas con los id para generarlos correativos

quiero generar correlativos con el id utilizando procedimientos almacenados, para insertar los campos y genere automaticamente el correlativo. Pero no me funciona.
Agradeceria su ayuda
el codigo que tengo es:

@Cod_Empleado_clinica as int,
@apellidos_empleado as char(35),
@cont as int,
@Maximo as int
as

SELECT MAX(Cod_Empleado_clinica) as Maximo from empleados_clinica as Emp,(insert into Empleados_Clinica(Cod_Empleado_clinica, Apellidos)
values(Maximo,@apellidos_empleado))
  #2 (permalink)  
Antiguo 19/07/2011, 08:47
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: Problemas con los id para generarlos correativos

Ya probaste usando un campo de tipo identity??

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 19/07/2011, 09:26
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: Problemas con los id para generarlos correativos

Ademas, dudo mucho que su codigo funcion, un SELECT en conjunto con un INSERT, nunca lo habia visto.
__________________
MCTS Isaias Islas
  #4 (permalink)  
Antiguo 19/07/2011, 09:26
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problemas con los id para generarlos correativos

Hola pues he estado averiguando sobre ese campo, pero el problena que tengo es que si por ejemplo elimino un bloque de registros por ejemplo del 50 al 65 entonces el sistema generara uno nuevo el cual seria 66 y en realidad no tengo el 66 sino que seria el 50 por que ya no esta este bloque.

Esa opcion ya la habia pensado, pero el jefe de informatica no quiere que lo haga asi, sino que desea que juegue con los max de los id, para no estar dando esos saltos.

Espero me compredas y me puedas ayudar a encontrar otra forma!
  #5 (permalink)  
Antiguo 19/07/2011, 09:30
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: Problemas con los id para generarlos correativos

De acuerdo, pero primero debes obtener el MAX()+1 y luego hacer el insert.

DECLARE @MyCorrelativo INT
BEGIN TRAN
SELECT @MyCorrelativo = MAX(CAMPO) + 1 FROM .........
INSERT .............
COMMIT TRAN
__________________
MCTS Isaias Islas
  #6 (permalink)  
Antiguo 19/07/2011, 09:33
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: Problemas con los id para generarlos correativos

De todos modos si juegas con los Max(id) como obtendras esos valores que faltan en tu bloque??? tendrias que andar recorriendo tu tablas para encontrar esos huecos, pero si quieres hacerlo con un max seria asi

insert into tabla (new_id, values)
select max(id)+1, values from tabla2


saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 19/07/2011, 09:58
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problemas con los id para generarlos correativos

iislas, probe tu codigo y me inserta el primer registro en el codigo 0 y el apellido, pero el siguente registro me da un eror de claves duplicadas, como que no esta tomando encuenta el max () + 1
  #8 (permalink)  
Antiguo 19/07/2011, 10:08
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problemas con los id para generarlos correativos

Gracias por su ayuda amigos, encontre el error y me funciono.
Buen dia
  #9 (permalink)  
Antiguo 19/07/2011, 10:15
 
Fecha de Ingreso: julio-2011
Mensajes: 5
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problemas con los id para generarlos correativos

Posteo la solucion por si alguien la necesita tambien.

@apellidos_empleado as char(35)

as

DECLARE @cont INT
BEGIN TRAN
SELECT @cont = MAX(Cod_Empleado_clinica) + 1 FROM Empleados_Clinica
insert into Empleados_Clinica(Cod_Empleado_clinica, Apellidos)
values(@cont, @apellidos_empleado)
COMMIT TRAN

Etiquetas: select, campos
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 06:04.