02/01/2009, 12:33
|
| | Fecha de Ingreso: noviembre-2007 Ubicación: Argentina
Mensajes: 134
Antigüedad: 17 años 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. |