Corregir el excaso comportamiento de los identy.

10/09/2004 - 09:35 por Jose Antonio | Informe spam
En una tabla, necesito que se numeren automaticamente una serie de filas
dependiendo de una columna en concreto, me explico.

Tengo la columna CLAVE y la columna IDENTY.
La numeracion de IDENTY depende de la columna CLAVE de esta manera:

CLAVE IDENTY

Rojo 1
Rojo 2
Rojo 3
Azul 1
Azul 2
Verde 1
Verde 2
Verde 3

Como los identy de SQL Server no admiten este comportamiento, necesito
hacerlo manualmente de la forma

declare @max int
select @max=isnull(max(identy)+1,1) from tabla where clave='Rojo'
insert tabla values('Rojo',@max)

el problema surge cuando necesito realizar una insercion multiple que
proviene de un select, algo asi

insert tabla select clave,(aqui debiera de estar la instruccion de numerar
el identy) from otra tabla

no encuentro la forma de hacerlo.

¿Alguien se ha encontrado con este problema alguna vez?

Saludos y gracias.
 

Leer las respuestas

#1 Salvador Ramos
10/09/2004 - 11:57 | Informe spam
Hola:

En www.portalsql.com tienes un artículo muy interesante sobre el tema, con
código fuente, problemas y soluciones a este tipo de implementaciones.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net
¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?

"Jose Antonio" escribió en el mensaje
news:%
En una tabla, necesito que se numeren automaticamente una serie de filas
dependiendo de una columna en concreto, me explico.

Tengo la columna CLAVE y la columna IDENTY.
La numeracion de IDENTY depende de la columna CLAVE de esta manera:

CLAVE IDENTY

Rojo 1
Rojo 2
Rojo 3
Azul 1
Azul 2
Verde 1
Verde 2
Verde 3

Como los identy de SQL Server no admiten este comportamiento, necesito
hacerlo manualmente de la forma

declare @max int
select @max=isnull(max(identy)+1,1) from tabla where clave='Rojo'
insert tabla values('Rojo',@max)

el problema surge cuando necesito realizar una insercion multiple que
proviene de un select, algo asi

insert tabla select clave,(aqui debiera de estar la instruccion de numerar
el identy) from otra tabla

no encuentro la forma de hacerlo.

¿Alguien se ha encontrado con este problema alguna vez?

Saludos y gracias.


Preguntas similares