Informix - Pregunta sobre SysIndex

 
Vista:

Pregunta sobre SysIndex

Publicado por Lydia (1 intervención) el 10/05/2010 19:50:27
Tengo varias tablas que continen dentro de sus claves los campos:campo1 y campo2, y el serial: serial1 (a parte de otros campos en las respectivos índices distintos para cada tabla).

cogamos como ejemplo la tabla:tabla1.
Tabla1, el índice contiene los campos: Campo1, Campo2, Campo3, Serial1
Los registros son los siguientes:
Registro 1:
Campo1=14
Campo2 =123
Campo3 = 'cc'
Serial = 1

Registro 2:
campo1 =14
campo2=123
campo3='cc'
Serial = 2

Registro 3:
campo1 =15
campo2=456
campo3='cc'
Serial = 1

Nuestro objetivo será actualizar los campos: Campo1 y Campo2 a 14 y 123.
El problema es que si lo hago así estaría duplicando código. Por lo tanto debería partir del Max(serial1) del Campo1=14 y campo2=123 y al actualizar el registro correspondiente actualizando también el serial1=serial1 +Max(serial1)

Los datos de entrada que conozco son Campo1, Campo2 que quiero modificar y Campo1, campo2 por el que quiero modificarlo.

Necesito una respuesta genérica, un bucle que encuentre todas las tablas que contengan los campos: Campo1, Campo2, Serial1. Sacar el index único de cada tabla.
Para cada index encontrado
Hacemos una select para que devuelva unique index (todas las columnas del index), Max(serial1)
From (tabla correspondiente)
Where Campo1=14
And Campo2 =123

Con el resultado del Index (menos el de los campos Campo1, Campo2, Serial1). Haremos un update set campo1=14, campo2=123, serial1 =serial1 + Max(serial) del select anterior
From (tabla correspondiente)
Where Index (menos los campos Campo1, Campo2, Serial1)
And Campo1=15
And Campo2=456

Problema: No se cómo sacar el nombre de las columnas que componen el índice, y la cantidad de columnas que tiene el índice, para hacerlo genérico.
No sé si tenemos la opción de sacar el nombre de las columnas que componen el índice, menos los campos que elija cómo excluyentes (en mi caso sería Campo1 y Campo2).

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder