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

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

Problème :

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

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 (le nom de la colonne 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 MySQL nomme les contraintes de ces tables par défaut. Utilisez cette requête pour les voir :

SELECT TABLE_NAME, CONSTRAINT_TYPE, CONSTRAINT_NAME
FROM information_schema.table_constraints
WHERE table_name='country' OR table_name='student';

Voici le résultat :

TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_NAME
pays CLÉ PRIMAIRE PRIMAIRE
pays UNIQUE nom
étudiant CLÉ PRIMAIRE PRIMAIRE
étudiant UNIQUE numéro_personnel
étudiant CLÉ ÉTRANGÈRE student_ibfk_1
étudiant VÉRIFIER student_chk_1

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 MySQL. Dans MySQL, les types de contraintes par défaut sont PRIMARY KEY , FOREIGN KEY , UNIQUE , et CHECK . Comment les noms par défaut sont-ils générés pour les contraintes ?

La PRIMARY KEY constraint est simplement nommé PRIMARY , car il y a toujours une clé primaire dans une table. Il existe deux contraintes nommées PRIMARY dans le résultat ci-dessus, mais les tables auxquelles ils appartiennent sont différentes.

Pour FOREIGN KEY , le nom suit la convention :le nom de la table, un trait de soulignement ('_ '), 'ibfk ', un autre trait de soulignement ('_ ’), et un nombre. Pour notre exemple, il s'agit de student_ibfk_1 dans le tableau student .

Le nom par défaut pour un CHECK contrainte est similaire à celle de la clé étrangère. Il commence par le nom de la table, un trait de soulignement ('_ '), 'chk ', un autre trait de soulignement ('_ ’), et un nombre. Pour notre exemple, il s'agit de student_chk_1 dans le tableau student .

Le nom par défaut d'un UNIQUE contrainte est le nom de la colonne elle-même. Pour notre exemple, il s'agit de personal_number dans le tableau student . Lorsqu'il y a plusieurs colonnes avec le UNIQUE contrainte, il utilise le nom de la première colonne dans la définition de la contrainte.