Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Qual é o nome de restrição padrão no Oracle?

Problema:


Você deseja saber os nomes padrão das restrições em uma tabela no Oracle.

Exemplo:


Em nosso banco de dados, criamos duas tabelas, country e student , com as seguintes restrições:PRIMARY KEY (o ID da coluna nas tabelas country e student ), FOREIGN KEY (a coluna country_id na tabela student ), DEFAULT (a coluna name na tabela student ), UNIQUE (a coluna name na tabela country e a coluna personal_number na tabela student ) e CHECK (a coluna age na tabela student ).

Solução:

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)
);

Vamos mostrar como o Oracle nomeia as restrições dessas tabelas por padrão. Use esta consulta para vê-los:
select CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME
from USER_CONSTRAINTS
where TABLE_NAME='STUDENT' OR TABLE_NAME='COUNTRY';

Aqui está o resultado:
CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME
SYS_C007376 R ESTUDANTE
SYS_C007366 P PAÍS
SYS_C007374 P ESTUDANTE
SYS_C007367 U PAÍS
SYS_C007375 U ESTUDANTE
SYS_C007372 C ESTUDANTE

Discussão:


Quando criamos nossas tabelas, definimos restrições para algumas colunas. No entanto, não especificamos os nomes para essas restrições, portanto, elas são nomeadas por padrão. Como os nomes padrão para restrições são gerados?

No Oracle, o nome da restrição padrão começa com o nome de usuário, seguido por ‘_C ’ e um número de sequência. Os tipos de restrição são ‘C ’ (check ), ‘P ' (chave primária), 'U ' (restrição única) e 'R ’ (chave estrangeira). Todos os nomes de restrição padrão são gerados como ‘SYS ’, ‘_ ’, e o número. Você pode ver os nomes padrão na tabela acima. Por exemplo, o CHECK restrição para a idade da coluna no student tabela tem o nome SYS_C007372 .