Resumen: En este tutorial, aprenderá a usar la columna de identidad de Oracle para definir fácilmente una columna numérica generada automáticamente para una tabla.
Introducción a Oracle identity column
Oracle 12c introdujo una nueva forma que le permite definir una columna de identidad para una tabla, que es similar a la columnaAUTO_INCREMENT
en MySQL oIDENTITY
en SQL Server.
la columna de identidad es muy útil para la columna de clave primaria sustituta., Al insertar una nueva fila en la columna identidad, Oracle genera automáticamente e inserta un valor secuencial en la columna.
para definir una columna de identidad, utilice la cláusula identity como se muestra a continuación:
primero, la palabra clave GENERATED
es obligatoria.
en segundo lugar, puede especificar una opción para generar valores de identidad:
-
GENERATED ALWAYS
: Oracle siempre genera un valor para la columna de identidad. Intentar insertar un valor en la columna identidad causará un error., -
GENERATED BY DEFAULT
: Oracle genera un valor para la columna de identidad si no proporciona ningún valor. Si proporciona un valor, Oracle insertará ese valor en la columna identidad. Para esta opción, Oracle emitirá un error si inserta un valor nulo en la columna identidad. -
GENERATED BY DEFAULT ON NULL
: Oracle genera un valor para la columna de identidad si proporciona un valor nulo o ningún valor.
En tercer lugar, puede tener varias opciones para la columna identidad.,
-
START WITH initial_value
controla el valor inicial a usar para la columna identidad. El valor inicial predeterminado es 1. -
INCREMENT BY internval_value
define el intervalo entre los valores generados. De forma predeterminada, el valor del intervalo es 1. -
CACHE
define una serie de valores que Oracle debe generar antemano para mejorar el rendimiento. Utilice esta opción para la columna que tiene un número elevado de inserciones.
ejemplos de columnas de identidad de Oracle
veamos algunos ejemplos de uso de las columnas de identidad de Oracle.,
A) GENERADO SIEMPRE ejemplo
La siguiente instrucción crea una tabla con el nombre identity_demo
que contiene una columna de identidad:
La siguiente instrucción inserta una nueva fila en el identity_demo
tabla:
Debido a que no especifica un valor para la etiqueta id
columna, Oracle genera automáticamente un valor secuencial a partir del 1.,
La siguiente declaración intenta insertar un valor en el id
columna de identidad:
Oracle emite un error:
Debido a que la columna de id se define como GENERATED ALWAYS
, no podría aceptar cualquier valor proporcionado.,
B) GENERATED BY DEFAULT example
Let’s change the id
column to GENERATED BY DEFAULT
:
The following statement inserts a new row into the identity_demo
table:
It worked as expected.,
la siguiente instrucción inserta una nueva fila en la tabla identity_demo
con un valor proporcionado para la columna id
:
en este ejemplo, Oracle utilizó el valor proporcionado y lo insertó en la tabla.,Primero, recrea la tabla identity_demo
cuya columna id
se define como columna de identidad con el valor inicial que comienza desde 100:
segundo, inserte una fila en la identity_demo
tabla:
tercero, consulta los datos de la identity_demo
tabla:
como puede ver, el valor inicial de la columna id
es 100 como se especifica en la cláusula identity.,
e) incremento por ejemplo de opción
primero, cambie la columna id de la tabla identity_demo
que incluye las opciones START WITH
y INCREMENT BY
.
en Segundo lugar, insertar dos filas en el identity_demo
tabla:
Tercer lugar, la consulta de los datos de la tabla para comprobar los insertos:
Como puede ver, la primera fila tiene el valor de id de 10. La segunda fila tiene el valor id 20., Esto es lo que definimos para la columna id que debe comenzar con 10 y aumentar en 10 para la nueva fila.
restricciones de columna de identidad de Oracle
las columnas de identidad están sujetas a las siguientes restricciones:
- Cada tabla tiene una y solo una columna de identidad.
- El tipo de datos de la columna identidad debe ser un tipo de datos numérico. el tipo de datos definido por el Usuario no se puede usar con la cláusula identity.
- la columna identity no es heredada por la instrucción
CREATE TABLE AS SELECT
., - la columna identidad no puede tener otra restricción
DEFAULT
. - Se puede inferir el algoritmo de cifrado para las columnas de identidad cifradas, por lo tanto, debe usar un algoritmo de cifrado fuerte.
- La restricción inline de la columna identity no debe entrar en conflicto con la restricción
NOT NULL
yNOT DEFERRABLE
indicada por la cláusula identity.
en este tutorial, ha aprendido a usar la columna de identidad de Oracle que le permite definir fácilmente una columna numérica generada automáticamente para una tabla.,
- ¿Fue útil este tutorial?
- YesNo