Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Minha dúvida é porque eu não tenho costume de criar CONSTRAINT, pensei que só era utilizado em FK, mas fui pesquisar e vi que ele é aplicado também na PK, UNIQUE e NOT NULL, por isso a dúvida, se eu não especificar, ele funciona?
Quais as consequências de não especificar?
Ainda não ajudou :unsure:
Quero dizer, eu crio a tabela com a PK, UNIQUE INDEX, FK e NOT NULL, só o que não faço é usar a palavra CONSTRAINT (não tenho experiência com CONSTRAINT).
Por exemplo:
Create table tabelaTeste (
id int unsigned auto_increment,
primary key (id)
);
create table parentTeste (
id int unsigned auto_increment,
parentId int unsigned not null,
primary key (id),
foreign key fkParentId (parentId) references tabelaTeste (id)
on delete restrict on update restrict
);
Crio as tabelas desta forma, e nunca tive problema, por isso não sei se dá problema ou não...
A sintaxe quando se cria na tabela não precisa da palavra CONSTRAINT , apenas quando criada a parte é que precisa.
http://dev.mysql.com/doc/refman/5.7/en/create-table.html
http://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html
Se é assim, tá beleza, hehehe.
Obrigado Motta.
Não especificando a constraint há o risco de uma quebra de integridade , por exemplo
Clientes com códigos iguais PK
Clientes com o mesmo CPF Unique
Pedidos sem clientes vínculados FK
Ajudou ?!