Insert en tabal seleccionando el ultimo ID+1 de esa tabla

30/09/2004 - 12:09 por Miguel Tubia | Informe spam
Hola a todos,
tengo una tabla que tiene una clave principal compuesta por dos propiedades:
id_cliente y tipo.
En un procedimiento tengo un proceso que miro todos los tipos posibles de
clientes y, cogiendo datos de otras tablas, relleno la de clientes.
El codigo id_cliente es númerico consecutiva, pero por cada cliente, por lo
que no es autonumerica ni nada de eso.
En la consulta tengo que meter las claves: el tipo me lo da una variable y
el id_cliente lo tendría que coger haciendo algo similar a

select isnull(max(id_cliente),0)+1

Quedando la insert ma o meno:

insert into Clientes
(id_cliente, tipo, nombre, ... (resto campos))
select (select isnull(max(id_cliente),0)+1 from Clientes where tipo=@tipo),
@tipo, d.nombre
from datos d
where d.tipo=@tipo

mas o menos. Las condiciones no son esas pero para hacernos una idea de como
va
Pues el problema es que al coger el max de id_cliente, me coge bien el
primero, pero luego ya no, me da error, parece q solo lo hace una vez.
¿Alguien sabe como se puede hacer? Estoy buscando pero no encuestro nada (tb
teniendo en cuenta q es jueves es normal...)
Muchas gracias por su ayuda
Un saludo
 

Leer las respuestas

#1 Maxi
30/09/2004 - 15:07 | Informe spam
Hola y que error te tira?


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Miguel Tubia" <####m_tubiaARROBAhotmail.com###> escribió en el mensaje
news:%
Hola a todos,
tengo una tabla que tiene una clave principal compuesta por dos


propiedades:
id_cliente y tipo.
En un procedimiento tengo un proceso que miro todos los tipos posibles de
clientes y, cogiendo datos de otras tablas, relleno la de clientes.
El codigo id_cliente es númerico consecutiva, pero por cada cliente, por


lo
que no es autonumerica ni nada de eso.
En la consulta tengo que meter las claves: el tipo me lo da una variable y
el id_cliente lo tendría que coger haciendo algo similar a

select isnull(max(id_cliente),0)+1

Quedando la insert ma o meno:

insert into Clientes
(id_cliente, tipo, nombre, ... (resto campos))
select (select isnull(max(id_cliente),0)+1 from Clientes where


tipo=@tipo),
@tipo, d.nombre
from datos d
where d.tipo=@tipo

mas o menos. Las condiciones no son esas pero para hacernos una idea de


como
va
Pues el problema es que al coger el max de id_cliente, me coge bien el
primero, pero luego ya no, me da error, parece q solo lo hace una vez.
¿Alguien sabe como se puede hacer? Estoy buscando pero no encuestro nada


(tb
teniendo en cuenta q es jueves es normal...)
Muchas gracias por su ayuda
Un saludo







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.769 / Virus Database: 516 - Release Date: 24/09/2004

Preguntas similares