Ver Mensaje Individual
  #6 (permalink)  
Antiguo 02/01/2009, 12:33
MarioHeredia
 
Fecha de Ingreso: noviembre-2007
Ubicación: Argentina
Mensajes: 134
Antigüedad: 16 años, 5 meses
Puntos: 3
Respuesta: Ayuda con clave primaria

Te propongo algo amigo...

Tu clave compuesta la separemos en campos

PK2 es COLUMNA_B
PK3 es COLUMNA_C
y
PK1 es COLUMNA_A

ok...

Las secuencias en Oracle son solo numeros que inician en un valor y van incrementando mediante un pedido explicito, o sea, usando la funcion "nextval".

Aqui veo dos cuestiones muy diferentes...

Lo que tu debes hacer es separar los datos que van a la tabla y los datos que vas a mostrar. Si?
Si usas UNICAMENTE la COLUMNA_A como clave primaria, solucionas tu problema... un solo campo, una sola secuencia, obtienes tu "primary key".

Entonces sin importar las combinaciones de los valores de las COLUMNA_B y COLUMNA_C tu mantienes tu clave primaria que es COLUMNA_A.
De esta manera verias algo asi despues de un tiempo...

COLUMNA_A COLUMNA_B COLUMNA_C
1 01 XX
2 01 XX
3 02 XY
4 03 XX
5 02 XY
6 01 XX

Si filtras por COLUMNA_B = '01' y COLUMNA_C = 'XX' tendrias lo siguiente...

COLUMNA_A COLUMNA_B COLUMNA_C
1 01 XX
2 01 XX
6 01 XX

tu me diras... "pero no es lo que yo quiero, necesito que sea secuencial!!!!"

Ok, ahora viene la parte debes comprender: que la COLUMNA_A es de uso "interno", se ve unicamente en la BD, el cliente no ve nunca este campo.

La solucion ahora es ordenar la busqueda anterior por COLUMNA_A, generando una COLUMNA_A_PRIMA que devuelta el siguiente resultado :

COLUMNA_A_PRIMA COLUMNA_B COLUMNA_C
1 01 XX
2 01 XX
3 01 XX

Se entiende?? Esto es lo que me parece, deberias implementar...
Es muy complicado y ademas dificil de mantener lo que tu quieres hacer "directamente" en la tabla.

Cualquier duda, estoy a disposicion.

Saludos, Mario.
__________________
Y venció David al filisteo con honda y piedra; e hirió al filisteo y lo mató, sin tener David espada en su mano.