Lo más correcto para este caso sería utilizar secuencias, aunque
creo que eso no te garantiza que queden huecos en las claves, ya que
siempre podría fallar una INSERT con NEXT VALUE FOR <secuencia>,
con lo que (creo) el valor de la secuencia se pierde. Si alguien puede
confirmar este punto, pues mejor :-)
El 28/09/2013 7:42, Carlos escribió:
Hola
No tengo un sistema a mano así que no se si esto tendrá algún error,
pero mas o menos yo lo haría de la siguiente manera
SELECT NUMERO FROM FICHERO WHERE NUMERO + 1 NOT IN (SELECT NUMERO FROM
FICHERO)
No es lo mas óptimo, pero siendo ficheros pequeños (por lo que dices,
menos de cien mil registros) te puede valer para saber a partir de qué
registros tienes saltos.
Si lo que quieres es saber exactamente que números faltan, y como
solución rápida, crea una tabla que sólo contenga un campo numérico
(SECUENCIA) y llénalo con valores del 1 al 99999 (o el máximo que
tengas). Después
SELECT SECUENCIA FROM TABLADEANDARPORCASA WHERE SECUENCIA NOT IN
(SELECT NUMERO FROM FICHERO)
Y si quieres algo mas "serio", a partir de la V5R3 se pueden crear algo
llamado secuencias con el comando CREATE SEQUENCE, pero nunca lo he
usado así que te tocaría investigar.
Saludos
El 27/09/13 13:30, Fernando idem escribió:
Buenos dias
a todos;
Estoy
intentando hacer una sentencia SQL para un problema surgido y haber si
me pueden ayudar a solucionarlo, siempre que sea posible.
Tenemos
cuatro ficheros, que cuando se dan de alta un dato, en cualquiera de
ellos, se le da un numero correlativo. Este número es único para los
cuatro ficheros. Por lo que no puede haber un numero repetido en
cualquiera de estos cuatro ficheros. Este nº correlativo va del 1 al
99.999. Este es un campo numérico de 5
posiciones.
Hemos
tenido algún problema y hay saltos en esa correlación, por
ejemplo están dados de alta los nº 33645, 33646, y luego pega un salto
al 33655. Existen varios saltos de este tipo.
Queremos averiguar,
cuales son los saltos que hay, para ver que numeraciones no se han dado
de alta. De esta manera poder rescatarlos y poder utilizarlos.
Estoy intentando
hacerlo en SQL, si no lo consigo, pues tendré que hacer un programa.
Un saludo
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.
José de la Herran Núñez
Kordinazio Teknikoko Burua Jefe del Área de Coordinación Técnica
Ayuntamiento de Vitoria-Gasteiz
Informazioaren Teknologien Saila Departamento de Tecnologías de la Información
Tel: work945161614 | Fax fax945161600
[email protected] | www.vitoria-gasteiz.org
KONFIDENTZIALTASUNA
Komunikazio honen edukia eta honi erantsitako dokumentazio osoarena konfidentziala da eta adierazitako jasotzaileari beste inori ez dagokio.
Zeu jasotzaile ez bazina, jakinaraz iezaguzu, mesedez, eta eskatu nahi dizugu edukiaren berri inori ez esan eta mezua ezaba dezazula.
CONFIDENCIALIDAD
El contenido de esta comunicación, así como el de toda la
documentación anexa, es confidencial y va dirigido
únicamente al destinatario del mismo.
En el supuesto de que usted no fuera el destinatario, le solicitamos
que nos lo indique y no comunique su contenido a terceros, procediendo
a su destrucción.
CONFIDENCIALITY
The content of this communication and any attached information is confidential and exclusively for the use of the addressee.
If you are not the addressee, we ask you to notify to the sender and do not pass its content to another person, and please be sure you destroy it.
|