Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

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

Problema:


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

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 (o nome da coluna 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) NOT NULL 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 MySQL nomeia as restrições dessas tabelas por padrão. Use esta consulta para vê-los:
SELECT TABLE_NAME, CONSTRAINT_TYPE, CONSTRAINT_NAME
FROM information_schema.table_constraints
WHERE table_name='country' OR table_name='student';

Aqui está o resultado:
TABLE_NAME CONSTRAINT_TYPE CONSTRAINT_NAME
país CHAVE PRIMÁRIA PRIMÁRIO
país ÚNICO nome
aluno CHAVE PRIMÁRIA PRIMÁRIO
aluno ÚNICO número_pessoal
aluno CHAVE ESTRANGEIRA student_ibfk_1
aluno VERIFICAR aluno_chk_1

Discussão:


Quando criamos nossas tabelas, definimos restrições para algumas colunas. No entanto, não especificamos os nomes para essas restrições, então elas são nomeadas por padrão no MySQL. No MySQL, os tipos de restrição padrão são PRIMARY KEY , FOREIGN KEY , UNIQUE e CHECK . Como os nomes padrão são gerados para restrições?

A PRIMARY KEY constraint é simplesmente chamado de PRIMARY , porque sempre há uma chave primária em uma tabela. Existem duas restrições chamadas PRIMARY no resultado acima, mas as tabelas a que pertencem são diferentes.

Para FOREIGN KEY , o nome segue a convenção:o nome da tabela, um sublinhado (‘_ ’), ‘ibfk ’, outro sublinhado (‘_ ’), e um número. Para nosso exemplo, é student_ibfk_1 na tabela student .

O nome padrão para um CHECK restrição é semelhante à da chave estrangeira. Começa com o nome da tabela, um sublinhado (‘_ ’), ‘chk ’, outro sublinhado (‘_ ’), e um número. Para nosso exemplo, é student_chk_1 na tabela student .

O nome padrão de um UNIQUE restrição é o nome da própria coluna. Para nosso exemplo, é personal_number na tabela student . Quando houver várias colunas com o UNIQUE restrição, ele usa o nome da primeira coluna na definição da restrição.