Identity en Variables tipo Table

15/01/2004 - 20:57 por Luis Cejas | Informe spam
Hola, tengo una duda... he hecho una tabla variable con un campo Identity.
El problema que surge es que quisiera resetear el SEED y no se como hacerlo.
Les paso el codigo ej.

Declare @XT Table ( Ln Tinyint identity (1,1) , nLinea int )

Insert @xt Values (1)
Insert @xt Values (2)
Insert @xt Values (3)
Insert @xt Values (4)

Select * from @XT
Delete from @XT

Insert @xt Values (5)
Select * from @XT


Muchas gracias.
Luis

Preguntas similare

Leer las respuestas

#6 Maximiliano D. A.
15/01/2004 - 22:29 | Informe spam
ok de ser asi esta muy bien lo que estas haciendo.

Pregunta: cual es la necesidad de en una tabla de memoria resetiar un
Identity? y ese identity en esa tabla de memoria para que lo estan usando
exactamente? si se puede saber no?

Salu2

Maximiliano Damian Accotto


"Luis Cejas" escribió en el mensaje
news:
Mostrar la cita
el
Mostrar la cita
funciona
Mostrar la cita
#7 Luis Cejas
15/01/2004 - 22:31 | Informe spam
Maximiliano,
Ya hemos evaluado la relacion Costo/Beneficio de dicha tabla, igualmente el
máximo de registros son 99 (de dos campos Tinyint)

Gracias,

Luis





Maximiliano D. A. escribió en mensaje ...
Mostrar la cita
no
Mostrar la cita
#XT"
Mostrar la cita
#8 Isaías
16/01/2004 - 02:17 | Informe spam
Por ahi hubieramos empezado, tal vez el saber ¿Que desea
hacer?, resuelva el crear o no, una tabla en RAM o crearla
temporal.

Saludos.
#9 Mario Cejas
16/01/2004 - 16:13 | Informe spam
Tratare de explicar someramente el problema del seed..

Te cuento que estamos desarrollando un sistema de reservas como
SABRE,AMADEUS,RECIBER,Luftansa Systems , etc,etc,etc.
El problema surge en la divicion de un PNR (Passenger Name Record).
En un PNR tenes por ejemplo los campos Contactos y Remarks que pueden o no
estar asosiados a algun pasajero de la reserva:
Ejemplo:
PNR SIN DIVIDIR
1.1CASTRO/R
2.1ABAURREA/G
3.1PEREZ/W
1 XX4330Y 20JAN MA AEPMDQ KL3 18:00 19:00
TKT/OK
PHONES
1- 54-11-4422-1200*/P1
2- 54-11-4560-0000 TELEFONO DEL HOTEL
REMARKS
1- RETIRAN LOS VOUCHERS EN EL HOTEL*/P2-3
2- NO HACE EL CIRCUITO DE CATARATAS DEL IGUAZU*/P1
RECEIVED FROM - PAX
BUE.BUEXX-MM 1506/06JAN04 *OWLYSF -H
El proceso de divicion del pasajero 1 genera 2 PNR en el cual
solo los PHONES y REMARKS del pasjero 1 y los comunes a todos, pasaran al
PNR Hijo. Y en el PNR Original quedaran los PHONES y REMARKS de los
pasajeros 2 y 3 mas los comunes a todos. El */Pn al final de las lineas
indica a que pasajero esta asosiada la linea.
Quiere decir que la linea 1 de PHONES pertenece solo al pax
1(1CASTRO/R) y la Linea 2 pertenece a los tres pax. Encambio en la linea 1
de REMARKS pertenece a los pasajeros 2 y 3 y la linea 2 al pax 1.NO HAY en
este caso un remark en comun que pertenezca a los tres pasajeros.

La tabla temporal y en memoria se usa para renumerar las lineas asociadas a
los NOMBRES de los campos PHONES y REMARKS del PNR a DIVIDIR con LOS PNR
PADRE e HIJO generados.
Ya que los PNR divididos quedan de esta manera.
**** PNR HIJO
1.1CASTRO/R
1 XX4330Y 20JAN TU AEPMDQ KL1 18:00 19:00
TKT/OK
PHONES
1- 54-11-4422-1200*/P1
2- 54-11-4560-0000 TELEFONO DEL HOTEL
REMARKS
1- NO HACE EL CIRCUITO DE CATARATAS DEL IGUAZU*/P1
2-»» SPLIT BY AEP.AEPXX-MC 1448/16ENE04-OWLYSF

*** PNR PADRE
1.1ABAURREA/G
2.1PEREZ/W
1 XX4330Y 20JAN TU AEPMDQ KL2 18:00 19:00
TKT/OK
PHONES
1- 54-11-4560-0000 TELEFONO DEL HOTEL
REMARKS
1- RETIRAN LOS VOUCHERS EN EL HOTEL*/P1-2
RECEIVED FROM - PAX
BUE.BUEXX-MM 1506/06JAN04 *OWLYSF -H

Notamos que, obviamente, la solucion mas rapida es mantener dos
tablas temporales en memoria con un identity para la nueva linea y un
campo tinyint con el valor de la lineas originales .
Declare @XTPadreTemp Table ( Ln Tinyint identity (1,1) , nPax Tinyint )
Declare @XTHijoTemp Table ( Ln Tinyint identity (1,1) , nPax Tinyint )
Es por eso que despues de actualizar uno de los campos (PHONES) y comienza
el proceso de actualizacion de REMARKS deberia poner a cero el identity para
cargar las lineas asociadas al campo Remarks.
El ejemplo dado en la pregunta original de Luis fue muy somero debido a
la complejidad del uso real. Espero que les haya aclarado algo(aunque creo
que no) gracias igual a los dos.

Saludos:
Mario


"Isaías" escribió en el mensaje
news:0c2701c3dbce$80acf3b0$
Por ahi hubieramos empezado, tal vez el saber ¿Que desea
hacer?, resuelva el crear o no, una tabla en RAM o crearla
temporal.

Saludos.
#10 Mario Cejas
16/01/2004 - 21:04 | Informe spam
Adrian: Muchas Gracias por la rta.
Te cuento que momentaneamente lo solucionamos con una variable que toma
el valor de count antes de vaciar la tabla de memoria. Para asi tener la
nuva base de la identidad
.
.
...
.
select @nBasePadre = Count (ln) from @XTPadreTemp
select @nBaseHijo = Count (ln) from @XTHijoTemp
Delete from @XTPadreTemp
Delete from @XTHijoTemp

Insert Into @XTPadreTemp


Entonces en Ln - @nBasePadre me da la nueva Identidad.

Gracias
Mario

"Adrian Garcia" escribió en el mensaje
news:%
Mostrar la cita
RESEED
Mostrar la cita
para
Mostrar la cita
Record).
Mostrar la cita
pasaran
Mostrar la cita
1
Mostrar la cita
asociadas
Mostrar la cita
PNR
Mostrar la cita
comienza
Mostrar la cita
debido
Mostrar la cita
creo
Mostrar la cita
Ads by Google
Search Busqueda sugerida