Apex 4.2.5 disponible

Ya está disponible la nueva versión de Oracle Application Express, la versión 4.2.5. Desde el pasado 9 de abril de 2014, puedes obtener la versión completa esta nueva versión En caso de Más »

Fechas OTN Tour Latinoamérica 2014

Las siguientes son las fechas completas del OTN Tour Latinoamérica 2014: Brasil – Sao Paulo 02 de Agosto 2014 Chile – Santiago 04 de Agosto 2014 Perú – Lima 07 de Agosto Más »

Participa en LA OTN Tour 2014 como expositor

Si deseas ser uno de los expositores en el OTN Tour 2014 Latinoamérica, te invito a que prepares y envíes tus propuestas para ser tomado en cuenta como tal. Desde este momento Más »

Importando datos con los utilitarios Apex

Dentro de los utilitarios que proporciona Oracle Application Express, existen funciones para importar, exportar, cargar o descargar datos desde o hacia la base de datos. En este post les explico como importar Más »

Fechas OTN Tour Latinoamérica norte 2014

Para quienes esperamos cada año por el mejor evento para profesionales Oracle de Latinoamérica, les quiero informar que ya se han definido las fechas a efectuarse este 2014 en la parte norte Más »

 

Cómo manejar llaves primarias de más de dos columnas con Oracle Apex

Una de las limitantes con las que cuenta Oracle Application Express, es que no puede manejar llaves primarias de más de dos columnas, esto nos pone ante un dilema, sobre todo cuando enfrentamos un proceso de traslado de sistemas o aplicaciones existentes, por ejemplo, aplicaciones desarrolladas con Oracle Forms, las cuales contienen tablas con llaves primarias compuestas por más de dos columnas.

Ante esta disyuntiva, una de las alternativas que tenemos, es el rediseño de las tablas de manera que:

  1. Se cree una nueva columna de llave primaria, la cual poblemos por medio de una secuencia.

  2. Crear una llave única para la tabla, formada por las columnas que antes conformaban la llave primaria.

El escenario anterior es el ideal, sin embargo, esto no siempre es posible, sino que más bien es lo que podremos hacer las menos de las veces.

Entonces, nos queda buscar otra solución que nos permita conservar nuestras tablas tal cual están definidas. Luego de investigar por un buen rato en Internet, me encontré con este código escrito por David Njoku en la siguiente dirección: http://dancingwithapex.blogspot.com/2008/12/tables-with-multiple-primary-keys-or.html

Básicamente, este código selecciona las tablas con llaves primarias de más de dos columnas y crea una vista con una nueva columna que contiene las columnas de la llave primaria concatenadas y las utiliza como nueva llave primaria. También crea un disparador que controla los procesos de inclusión, borrado y modificación de registros en las tablas.

Hay algunas consideraciones a tener en cuenta para poder utilizar este código, en mi caso, le agregué todos los “|” que no aparecen en el código original, además, le agregué una condición más a la sentencia “select” de la primer sentencia “for” del procedimiento, para que se ejecute para un esquema específico.

También debe tener en cuenta que si ejecuta el código en un usuario específico, este usuario debe tener los privilegios necesarios, sobre los objetos utilizados.

Una vez ejecutado el código, tendrá una nueva vista por cada tabla que tenga llaves primarias compuestas por más de dos columnas. Estas vistas son las que tiene que utilizar para realizar las formas de mantenimiento y los reportes en Apex.

Puede obtener el código para generar las vistas de las tablas desde el siguiente enlace.

Ahora pues, baje el código, ejecútelo y dispóngase a desarrollar sus nuevas aplicaciones con Oracle Apex.

Los espero en la siguiente entrega.

Be Sociable, Share!

0 Respuestas a Cómo manejar llaves primarias de más de dos columnas con Oracle Apex

  1. Oscar says:

    Hola
    Muy interesante tu sitio. Tiene buenos tips y es de los pocos que cubren APEX en español.

    Saludos
    Oscar

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>