Ir para conteúdo

POWERED BY:

Arquivado

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

Henrique Barcelos

Foreign Key

Recommended Posts

E ae pessoal, siguinte, esse negócio de Foreign key eh meio novo pra mim, não to conseguindo inserir, diz q ha um erro, + num sei onde

 

CREATE TABLE `fotos` (
  `fid` int(6) unsigned NOT NULL auto_increment,
  `caminho_foto` varchar(60) collate utf8_unicode_ci NOT NULL,
  `caminho_tumb` varchar(60) collate utf8_unicode_ci NOT NULL,
  `eid` int(5) NOT NULL,
  PRIMARY KEY  (`fid`)
  FOREIGN KEY  (`eid`) REFERENCES `eventos` (`eid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

parece que faltou uma vírgula entre o PrimaryKey e o ForeignKey:

PRIMARY KEY (`fid`),

FOREIGN KEY (`eid`) REFERENCES `eventos` (`eid`)

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado pela atenção + não funcionou xD, aparece:

 

Mensagens do MySQL : Documentação

#1005 - Can't create table '.\agitando\fotos.frm' (errno: 150)

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, quando executei era erro de sintaxe.

agora o problema é mais complicado...

 

se está fazendo referência a outra tabela já populada, dá uma olhada se não está dando problema com relação a violação de integridade.

 

veja também nesta outra tabela se o campo que está sendo 'ligado' possui algum índice, etc.

 

seria mais fácil postar a estrutura da tabela 'eventos' p/ ter noção do que pode ser...

Compartilhar este post


Link para o post
Compartilhar em outros sites

CREATE TABLE `eventos` (

`eid` int(10) unsigned NOT NULL auto_increment,

`enome` varchar(30) collate utf8_unicode_ci NOT NULL,

`ecidade` varchar(30) collate utf8_unicode_ci NOT NULL,

`eestado` char(2) collate utf8_unicode_ci NOT NULL,

`edata_ini` date NOT NULL,

`edata_fim` date NOT NULL,

`enum_fotos` int(3) NOT NULL,

PRIMARY KEY (`eid`),

KEY `eid` (`eid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

 

tah assim

Compartilhar este post


Link para o post
Compartilhar em outros sites

CREATE TABLE `fotos` (

`fid` int(6) unsigned NOT NULL auto_increment,

`caminho_foto` varchar(60) collate utf8_unicode_ci NOT NULL,

`caminho_tumb` varchar(60) collate utf8_unicode_ci NOT NULL,

`eid` int(10) unsigned NOT NULL,

PRIMARY KEY (`fid`),

FOREIGN KEY (`eid`) REFERENCES `eventos` (`eid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;

o campo que faz a ligação com a outra tabela, tem que ter a mesma definição do tipo de dados (exceto alguns detalhes como o 'auto_increment'). Logo tem que ser igual ao campo eid da tabela eventos que está assim: `eid` int(10) unsigned NOT NULL.

 

aqui funfou, faz um teste com esta nova alteração na tabela `fotos`.

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.