DB2: busque la columna generada desde Java

Estoy trabajando con la tabla DB2 usando código Java y usando ResultSetMetaData para obtener metadatos para la tabla. ¿Hay alguna forma de saber si la tabla ha generado una columna y, en caso afirmativo, hay alguna forma de averiguar la fórmula utilizada para ello?

El uso de ResultSetMetaData o cualquier otro enfoque está bien siempre que sea posible a través del código Java.

Mehul

preguntado el 27 de julio de 12 a las 20:07

1 Respuestas

Utilice los catálogos del sistema. Abra lo siguiente como un ResultSet en Java

    SELECT colname
      FROM SysCat.Columns
      WHERE tabname = ?
        AND tabschema = ?
        AND identity = 'Y'

Si el ResultSet está vacío, su tabla no tiene columnas GENERADAS. De lo contrario, puede determinar qué nombre de columna se GENERA a partir del resultado de la consulta anterior.

Si está buscando una fórmula que 'pregenerará' el siguiente valor para la columna IDENTIDAD, no hay forma de hacerlo, al menos no cuando la base de datos está activa.

Respondido 27 Jul 12, 23:07

Gracias por la respuesta... Eso realmente ayudó. Con respecto a la fórmula, dijo, no puedo acceder cuando la base de datos está activa, pero lógicamente esa fórmula también debe almacenarse en algún lugar para que la base de datos genere valor previamente, por lo que, al igual que otros metadatos, también debo poder acceder a esa fórmula. Es mi suposición. Corrígeme si estoy equivocado. - Mehul

Quiero decir que no puede obtener el valor que está a punto de asignarse a una columna GENERADA mientras la base de datos está activa. Ciertamente puede descubrir qué columnas son columnas de IDENTIDAD usando el SQL anterior. Lo más cercano que puede obtener es SysCat.Sequences.start, pero cuando la base de datos está activa, ese número a menudo será más alto que el siguiente número asignado a la columna IDENTIDAD. La prueba de esto es demasiado larga para el margen. - user980717

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.