sql >> Base de Datos >  >> RDS >> Oracle

¿Cuál es el nombre de restricción predeterminado en Oracle?

Problema:

Desea conocer los nombres predeterminados de las restricciones en una tabla en Oracle.

Ejemplo:

En nuestra base de datos, creamos dos tablas, country y student , con las siguientes restricciones:PRIMARY KEY (el id de la columna en las tablas country y student ), FOREIGN KEY (la columna country_id en la tabla student ), DEFAULT (la columna name en la tabla student ), UNIQUE (la columna name en la tabla country y la columna personal_number en la tabla student ), y CHECK (la columna age en la tabla student ).

Solución:

CREATE TABLE country (
id int NOT NULL primary key,
name varchar(100) UNIQUE
);

CREATE TABLE student (
id int NOT NULL primary key,
name varchar(100) DEFAULT 'UNKNOWN',
personal_number varchar(100) UNIQUE,
age int CHECK(age>15),
country_id int,
FOREIGN KEY(country_id) references country(id)
);

Veamos cómo Oracle nombra las restricciones de estas tablas de forma predeterminada. Usa esta consulta para verlos:

select CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME
from USER_CONSTRAINTS
where TABLE_NAME='STUDENT' OR TABLE_NAME='COUNTRY';

Aquí está el resultado:

CONSTRAINT_NAME CONSTRAINT_TYPE NOMBRE_TABLA
SYS_C007376 R ESTUDIANTE
SYS_C007366 P PAÍS
SYS_C007374 P ESTUDIANTE
SYS_C007367 T PAÍS
SYS_C007375 T ESTUDIANTE
SYS_C007372 C ESTUDIANTE

Discusión:

Cuando creamos nuestras tablas, establecemos restricciones para algunas columnas. Sin embargo, no especificamos los nombres de estas restricciones, por lo que se nombran de forma predeterminada. ¿Cómo se generan los nombres predeterminados para las restricciones?

En Oracle, el nombre de restricción predeterminado comienza con el nombre de usuario, seguido de '_C ' y un número de secuencia. Los tipos de restricción son 'C ' (check ), ‘P ' (clave principal), 'U ' (restricción única) y 'R ' (clave externa). Todos los nombres de restricciones predeterminados se generan como 'SYS ', '_ ', y el número. Puede ver los nombres predeterminados en la tabla anterior. Por ejemplo, el CHECK restricción para la edad de la columna en el student la tabla tiene el nombre SYS_C007372 .