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

Quel est le nom de contrainte par défaut dans PostgreSQL ?

Problème :

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

Exemple :

Dans notre base de données, nous créons deux tables, country et student , avec les contraintes suivantes :PRIMARY KEY (la colonne id 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) NOT NULL DEFAULT 'unknown',
personal_number varchar(100) UNIQUE,
age int CHECK(age>15),
country_id int,
FOREIGN KEY(country_id) references country(id)
);

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

SELECT conname, contype
FROM pg_catalog.pg_constraint;

Voici le résultat :

conname contype
country_pkey p
country_name_key u
student_age_check c
student_pkey p
student_personal_number_key u
student_country_id_fkey f

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 dans PostgreSQL. Comment les noms par défaut des contraintes sont-ils générés ?

Dans PostgreSQL, les types de contraintes par défaut sont p , f , u , et c .

La PRIMARY KEY est nommé par défaut avec le nom de la table, un tiret bas (‘_ ') et 'pkey '. Dans notre tableau de résultats ci-dessus, vous pouvez voir deux PRIMARY KEY noms (tapez ‘p ’) – un par le nom country_pkey dans le country table et une autre par le nom student_pkey dans le student tableau.

Une FOREIGN KEY est indiqué par le type de contrainte ‘f '. Son nom est généré par le nom de la table courante, un trait de soulignement (‘_ ') , le nom de la colonne, un autre trait de soulignement ('_ ') et 'fkey '. Dans notre exemple, le nom de la contrainte de clé étrangère est student_country_id_fkey , car la colonne country_id dans le tableau student est une clé étrangère.

Le nom par défaut pour un CHECK contrainte est similaire à celle d'une clé étrangère, sauf qu'elle est du type de contrainte 'c '. Dans notre exemple, la colonne age dans le tableau student a cette contrainte, donc le nom de la contrainte par défaut est student_age_check .

Le nom par défaut pour un UNIQUE contrainte (type ‘u ') est le nom de la table, un trait de soulignement ('_ '), le nom de la colonne, un autre trait de soulignement ('_ ') et 'key '. Dans notre exemple, la table student a un UNIQUE contrainte nommée student_personal_number_key . Pour plusieurs colonnes dans une contrainte, le nom suit une convention similaire mais contient les noms de toutes les colonnes dans la définition de la contrainte.