Reasignar valores consecutivos a una columna

25/10/2006 - 22:09 por Federico Ezequiel | Informe spam
Listeros:

Como ejercicio de autoaprendizaje me propuse resolver el siguiente problema:
tengo una tabla con la primer columna int y la otra varchar.
No importa que coloco en la columna varchar. La tabla tampoco tiene ningún
tipo de constraint.
La cuestión es que incorporo valores a la columna int que son siempre
ascendentes pero no necesariamente consecutivos (por ej.: 4,8,9,12)
Al eliminar filas de la tabla, se activa un trigger que hace un update sobre
la columna int de manera que quede con valores ascendentes y comenzando por
1.
Un ejemplo concreto:
4, 'cuatro'
8, 'ocho'
9, 'nueve'
12, 'doce'

El delete elimina la fila del 8 y del 12, de manera que el trigger tiene que
dejarme esto en la tabla:

1, 'cuatro'
2, 'nueve'

No le busquen una aplicación al ejercicio por que tal vez no la tenga, pero
me sirve para aprender.
Yo resolví el problema y construí un trigger que hace esto. Pero mi pregunta
es si existe algún modo en SQL Server de ir pasando de fila en fila para
asignar a la columna int los valores 1, 2, 3, etc.
A mi se me ocurrió que podrían servirme los cursores, pero realmente no sé
si es así y necesito ver otras posibilidades.
Muchas gracias.

Federico
 

Leer las respuestas

#1 hombre-chango
26/06/2013 - 00:16 | Informe spam
Federico Ezequiel escribió el 25/10/2006 22:09 :
Listeros:

Como ejercicio de autoaprendizaje me propuse resolver el siguiente problema:
tengo una tabla con la primer columna int y la otra varchar.
No importa que coloco en la columna varchar. La tabla tampoco tiene
ningún
tipo de constraint.
La cuestión es que incorporo valores a la columna int que son siempre
ascendentes pero no necesariamente consecutivos (por ej.: 4,8,9,12)
Al eliminar filas de la tabla, se activa un trigger que hace un update sobre
la columna int de manera que quede con valores ascendentes y comenzando por
1.
Un ejemplo concreto:
4, 'cuatro'
8, 'ocho'
9, 'nueve'
12, 'doce'

El delete elimina la fila del 8 y del 12, de manera que el trigger tiene que
dejarme esto en la tabla:

1, 'cuatro'
2, 'nueve'

No le busquen una aplicación al ejercicio por que tal vez no la tenga,
pero
me sirve para aprender.
Yo resolví el problema y construí un trigger que hace esto. Pero
mi pregunta
es si existe algún modo en SQL Server de ir pasando de fila en fila para
asignar a la columna int los valores 1, 2, 3, etc.
A mi se me ocurrió que podrían servirme los cursores, pero
realmente no sé
si es así y necesito ver otras posibilidades.
Muchas gracias.

Federico


¡ Hola ! amigo estoy muy interezado en el trigger que hablas puesto necesito reordenar los valores cada ves que elimino un registro que no es consecutivo, serias tan amable de ayudarme al respecto, estoy programando en visual studio 2010

Preguntas similares