Columna de identidad de Oracle

Columna de identidad de Oracle
En este tutorial, aprenderá cómo usar y trabajar con la columna de identidad de Oracle para definir una columna numérica autogenada en una tabla.

Si alguna vez ha trabajado con bases de datos MySQL, puede estar familiarizado con la columna Auto_incement. En Oracle, utilizamos una columna de identidad para permitir que el motor de la base de datos genere automáticamente un valor numérico para cada fila agregada a la tabla a un intervalo específico.

Columna de identidad de Oracle

La columna Oracle Identity está disponible en la versión 12c y superior. La columna de identidad genera automáticamente un valor numérico para cada fila insertada en la tabla.

Dado que el motor de la base de datos genera un valor único para cada fila agregada a la tabla, funciona como una clave primaria sustituta en la base de datos.

En Oracle, definimos una columna de identidad usando la sintaxis a continuación:

Generado [siempre | Por defecto [en NULL]]]
Como identidad [(identity_options)]

Los parámetros de la declaración, como se vio anteriormente, incluyen lo siguiente:

  1. Generado: comenzamos con la palabra clave generada, donde los valores son generados automáticamente por el motor de la base de datos.
  2. Siempre, de manera similar, este valor asegura que solo el motor de la base de datos pueda agregar valores a la columna. Intentar agregar valores manualmente dará como resultado un error.
  3. Por defecto: esto causará un error si proporciona un valor nulo a la columna.
  4. De forma predeterminada en NULL: Oracle generará un valor en lugar de devolver un error en la entrada NULL.
  5. Como identidad: esto define que esta es una columna de identidad.
  6. Comience con el valor: define el valor inicial utilizado para la columna de identidad. Por defecto, el valor comenzará en 1.
  7. Incremento por valor: define el valor de intervalo entre los valores generados. Por defecto, la función utilizará un intervalo de 1.
  8. Cache: define el número de valores que el motor de la base de datos generará de antemano para aumentar el rendimiento. Esta opción es útil cuando necesita autogenerados muchos registros.

Columnas de identidad de Oracle

Descubra ejemplos básicos de cómo usar la columna de identidad en las bases de datos Oracle.

Oracle Crear columna de identidad

La forma más común y recomendada de crear una columna de identidad en una tabla es durante la creación.

Un ejemplo a continuación demuestra cómo podemos lograr esto:

Crear productos de mesa (
Número de producto_id generado siempre como identidad,
product_name varchar2 (255) no nulo,
Número de cantidad no check nulo (cantidad> 0),
número de precio,
Clave primaria (Product_ID)
);

La declaración anterior crea una tabla llamada productos con una columna de identidad de Product_ID.

Luego podemos insertar algunos registros de muestra en la tabla como:

Insertar en productos (Product_Name, Cantidad, precio) Valores ('Microsoft Volterra', 0, 599);

En este caso, no especificamos el valor para la columna Product_ID en la tabla anterior. Esto permitirá que el motor de la base de datos genere valores para las columnas agregadas automáticamente. Como se mencionó, Oracle comenzará con el valor de 1 y el incremento por 1 para cada fila agregada.

Como se mencionó, intentar agregar un valor para la columna de identidad dará como resultado un error:

Insertar en productos (Product_ID, Product_Name, Cantidad, Precio) Valores (2, 'Microsoft Volterra', 10, 599);

Error resultante:

Error de SQL: ORA-32795: No se puede insertar en una columna de identidad siempre generada

Esto se debe a que la columna de identidad está configurada para generar siempre.

Ejemplo 2 - Oracle Identity generada por defecto.

También podemos cambiar la columna de identidad de generada siempre generada por defecto como:

Crear productos de mesa (
Número de Product_ID generado por defecto como identidad,
product_name varchar2 (255) no nulo,
Número de cantidad no check nulo (cantidad> 0),
número de precio,
Clave primaria (Product_ID)
);

En este caso, podemos agregar manualmente un valor para la columna Product_ID.

Inserte en productos (Product_ID, Product_Name, Cantidad, Precio) Valores (1, 'Microsoft Volterra', 0, 599);

Del mismo modo, si no proporcionamos un valor para la columna, el motor de la base de datos lo generará automáticamente.

No puede insertar un valor nulo en una columna de identidad como se define anteriormente.

Ejemplo 3
También podemos definir el inicio y los valores de intervalo durante la creación de la tabla como se muestra:

Crear productos de mesa (
Número de producto_id generado por defecto a medida que la identidad comienza con 10 incrementos por 2,
product_name varchar2 (255) no nulo,
Número de cantidad no check nulo (cantidad> 0),
número de precio,
Clave primaria (Product_ID)
);

En este caso, los valores autogenados comenzarán en diez e incrementarán por 2 para cada nueva fila agregada a la tabla.

Puntos a tener en cuenta

Aunque una columna de identidad proporciona una conveniencia considerable cuando se trabaja con un conjunto de datos grande, viene con restricciones. Éstas incluyen:

  1. Una tabla solo puede contener una columna de identidad.
  2. Una columna de identidad no puede contener una restricción predeterminada.
  3. Una tabla de creación no puede heredar una columna de identidad como instrucción select.
  4. El valor de una columna de identidad solo puede ser un tipo numérico.

Conclusión

En esta publicación, descubrió los diversos métodos y técnicas de trabajo con la columna de identidad en las bases de datos Oracle.