Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Problema Secuencia Oracle

Estas en el tema de Problema Secuencia Oracle en el foro de Oracle en Foros del Web. Buenos Dias a todos!!! Quisiera saber si existe una solución, dándole una opción especial a esta secuencia: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original CREATE SEQUENCE ...
  #1 (permalink)  
Antiguo 18/10/2013, 22:45
 
Fecha de Ingreso: octubre-2013
Mensajes: 1
Antigüedad: 10 años, 5 meses
Puntos: 0
Problema Secuencia Oracle

Buenos Dias a todos!!!

Quisiera saber si existe una solución, dándole una opción especial a esta secuencia:
Código SQL:
Ver original
  1. CREATE SEQUENCE sec1
  2. START WITH 1
  3. INCREMENT BY 1
  4. MAXVALUE 10
  5. CYCLE
  6. NOCACHE;

en donde hagamos de cuenta que esta secuencia genera una llave primaria para una tabla que a lo sumo va a tener 10 datos albergados. si agrego todos los datos, osea 10 datos ya no podria agregar mas datos, pero al eliminar un dato, por ejemplo el que tiene la llave primaria (o numero generado por la secuencia) de 5, me imagino que debe existir alguna manera en la cual pueda agregar un nuevo dato con esa llave primaria utilizando la misma secuencia dado que tiene la caracteristica ciclica. Pero lo que ocurre es que si por ejemplo en este caso el current val de la secuencia es 10, la BD me va a generar 4 veces un error, dado que la clave primaria ya existe, y en el momento que el nextval de la secuencia sea 5 si me dejara insertar dicho valor en la tabla.

quisiera saber si existe alguna solucion dandole una opcion a esta secuencia. Se que tal vez muchas personas podran decir que simplemente le de un valor mucho mas grande al MAXVALUE de la secuencia, pero esto lo tome como un simple ejemplo de lo que realmente necesito hacer.

Agradezco enormemente su ayuda!!! Gracias!!

Última edición por gnzsoloyo; 19/10/2013 a las 05:33
  #2 (permalink)  
Antiguo 19/10/2013, 05:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema Secuencia Oracle

Cita:
quisiera saber si existe alguna solucion dandole una opcion a esta secuencia. Se que tal vez muchas personas podran decir que simplemente le de un valor mucho mas grande al MAXVALUE de la secuencia,
La secuencia no tiene ningún error, y no, no está pensada paa hacer lo que quieres, que en realidad no sólo es un error conceptual, sino que es innecesario: La solución de un caso de restricción por cantidad de registros a una tabla no se diseña sobre la PK.

El error conceptual al que me refiero que pareces tener es el de PK. Una PK no se plantea como un simple numerador incremental. No. Una PK es un campo que identifique un registro en el universo posible de registros, lo que significa que aunque borres ese registro, su valor debería ser históricamente tenido en cuenta para evitar que se ingrese el mismo registro, pero cono otro valor de secuencia.
Esto es un ejemplo, por supuesto.
Además, una PK no necesariamente necesita ser numérica. Bien podría ser un conjunto de campos (fechas y codigos, p.e.), que según las necesidades de diseño, determinen unicidad de valores.
Como fuese, la mejor solución es dejar correr la numeración, y simplemente antes de hacer cualquier inserción, verificar cuántos registros hay, antes de proceder a insertar uno nuevo.
Al menos es lo que suele hacerse.
Plantear la sequence como limitador de registros de una tabla es una muy mala idea.
Cita:
pero esto lo tome como un simple ejemplo de lo que realmente necesito hacer.
Aquí te estas equivocando con todo el tema. Si no nos explicas exactamente cómo es el caso y qué quieres lograr, muy probablemente las soluciones que te demos no sean ni siquiera aplicables.
Esto ya ha pasado. Los foristas suelen "simplificar", para "darnos una idea" aproximada, de modos que luego inducen a error, y terminan en consejos inservibles.

Plantea el caso real, el problema real. Entonces avanzaremos mejor.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: secuencia, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:55.