Oracle
 sql >> Base de données >  >> RDS >> Oracle

Qu'est-ce que le nom de contrainte par défaut dans Oracle ?

Problème :

Vous voulez connaître les noms par défaut des contraintes dans une table dans Oracle.

Exemple :

Dans notre base de données, nous créons deux tables, country et student , avec les contraintes suivantes :PRIMARY KEY (l'identifiant de la colonne dans les tableaux country et student ), FOREIGN KEY (la colonne country_id dans le tableau student ), DEFAULT (la colonne name dans le tableau student ), UNIQUE (la colonne name dans le tableau country et la colonne personal_number dans le tableau student ), et CHECK (la colonne age dans le tableau student ).

Solution :

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

Montrons comment Oracle nomme les contraintes de ces tables par défaut. Utilisez cette requête pour les voir :

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

Voici le résultat :

CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME
SYS_C007376 R ÉTUDIANT
SYS_C007366 P PAYS
SYS_C007374 P ÉTUDIANT
SYS_C007367 U PAYS
SYS_C007375 U ÉTUDIANT
SYS_C007372 C ÉTUDIANT

Discussion :

Lorsque nous créons nos tables, nous définissons des contraintes pour certaines colonnes. Cependant, nous ne spécifions pas les noms de ces contraintes, elles sont donc nommées par défaut. Comment les noms par défaut des contraintes sont-ils générés ?

Dans Oracle, le nom de la contrainte par défaut commence par le nom d'utilisateur, suivi de '_C ' et un numéro de séquence. Les types de contrainte sont ‘C ' (check ), 'P ' (clé primaire), 'U ' (contrainte unique) et 'R ' (clé étrangère). Tous les noms de contraintes par défaut sont générés en tant que 'SYS ', '_ ', et le nombre. Vous pouvez voir les noms par défaut dans le tableau ci-dessus. Par exemple, le CHECK contrainte pour la colonne age dans le student la table porte le nom SYS_C007372 .