Columnas Virtuales

La capacidad de crear columnas virtuales es una característica nueva en Oracle 11g que permite definir un campo que contiene datos derivados (calculados), obtenidos de otras columnas de la base de datos.

Las características que tiene son:

  • No consumen espacio ya que se calculan al instante (antes se realizaba mediante triggers).
  • Se pueden crear índices sobre estas columnas.
  • No están soportadas para tablas IOT, EXTERNAL, CLUSTER ni TEMPORARY
  • Tampoco están soportados algunos tipos de datos suministrados por Oracle: tipos definidos por el usuario, LOBs, o LONG RAW.

Para su creación se utiliza la siguiente sintaxis:

Este formato incorpora los siguientes parámetros:

  • nombre_columna : es el nombre de la columna virtual.
  • tipo_dato : es opcional y se utiliza para definir el tipo de dato de la columna.
  • GENERATED ALWAYS : es opcional y se usa para clarificar que los datos no son almacenados en disco.
  • AS (expresión) : define el contenido de la columna virtual. Esta expresión tiene las siguientes restricciones:
  1. No puede hacer referencia a otras columnas virtuales.
  2. Todas las columnas utilizadas en la expresión deben existir en la misma tabla.
  3. Puede ser una función definida por el usuario, pero no podrá utilizarse como clave de particionamiento.
  4. El resultado debe ser un valor escalar.
  5. VIRTUAL: es opcional.

Ejemplo:

La definición de la columna virtual se encuentra en  el campo DATA_DEFAULT de la vista del diccionario de datos USER/ALL/DBA_TAB_COLUMNS.

Cuando se realice una inserción de registros en una tabla con columnas virtuales, se debe incluir default como valor de dicho campo o no identificar esa columna en la relación de campos.

Comments are closed.