Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fefes

Chave secundária Mysql

Recommended Posts

Pessoal,

 

dentro de uma tabela no Mysql, é possível criar uma chave secundária (sem ser estrangeira) ?

 

Outra pergunta : alguém pode me explicar ou me indicar algum documento que explica melhor: regras de validação, integridade e consistência no MySQL ?

 

Obrigadinha

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa,

 

São as chaves estrangeiras implícitas, ou seja, desvinculadas...quando se trabalha com tabelas MyISAM pode se ter esse tipo de chave, mas a engenharia de armazenamento MyISAM não dá suporte à integridade referencial, o que de vez em quando nos dá um pouco de dor de cabeça, pois você facilmente consegue inserir na tabela filha, registros que não fazem parte da chave primária da tabela pai.

 

Já as tabelas que são gerenciadas sob a engenharia de arnazenamento InnoDB, dá suporte a integridade referencial e tipo possibilita somente cadastrar na tabela filha, registros que façam parte da tabela pai. Caso você tente inserir no filho um registro que não faz parte da chave primária na tabela pai, um erro de CONSTRAINT será emitido e o INSERT ou UPDATE será descartado.

 

Tendo a tabela A:

CREATE TABLE A (id int(5) PRIMARY KEY, nome char(50)) Engine=INNODB;

 

Tendo a tabela B:

CREATE TABLE B (id int(5), idade tinyint, constraint fk_b_a FOREIGN KEY (id) REFERENCES A(id)) Engine=INNODB;

 

Para que o comando de criação de foreign key funcione, siga as seguintes diretrizes:

 

-> As duas tabelas devem ser do tipo InnoDB (a tabela não é INNODB, ela somente é controlada pela engenharia de armazenamento INNODB, pois o MySQL trabalha de forma modular "MySQL 5.0 Certification Guide - página 354, tópico 23.3");

-> os tipos de dados da PRIMARY KEY e da FOREIGN KEY devem ser o mesmo;

-> o nome da coluna pode ser diferente;

 

Faça os inserts em A depois em B. Tente inserir em B algum registro que não tem em A e veja o que acontece. No exemplo acima não indexamos os campos envolvidos na criação da foreign key, o MySQL faz isso automaticamete se você não fizer.

 

Uma referência completa desse assunto, pode ser acessada em: http://dev.mysql.com/doc/refman/5.0/en/inn...onstraints.html

 

Abração, DEUS abençõe!! http://forum.imasters.com.br/public/style_emoticons/default/natal_tongue.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.