Galera, como eu altero um campo na tabela para que ele seja uma chave estrangeira?
Pra facilitar, tenho o seguinte:
Duas tabelas chamadas: “posts” e “comments”. Quero que o campo “post_id” da tabela “comments” refencie o campo “id” da tabela “posts”. Alguém poderia me ajudar na sintaxe do SQL para essa alteração?
Sabendo-se que: o campo “id” da tabela “posts” é do tipo int, largura 11, auto incrementado.
Antes que perguntem: Sim, ambas as tabelas são InnoDB.
O sql para isso é:
ALTER TABLE `comments`
ADD CONSTRAINT `fk_comments_posts`
FOREIGN KEY `fk_comments_posts` (`post_id`)
REFERENCES `posts` (`id`)
ON DELETE RESTRICT
ON UPDATE RESTRICT;
Uma dica, vá no site do MySQL e baixe o MySQL query browser. Ele não só tem um editor visual para isso aí como, antes de modificar o banco de dados, mostra o SQL do que ele vai fazer para você.
http://dev.mysql.com/downloads/gui-tools/5.0.html
Cara, vlw pela ajuda. Vou testar mais tarde. Quanto ao que tu falaste, eu não instalo pq uso o Ruindows Millennium. Atualmente eu uso o MySQL Front e o phpMyAdmin pra administrar o MySQL, mas não encontrei suporte à criação de foreign keys. Dei uma olhada no manual do MySQL no site do próprio, mas não consegui montar o SQL corretamente.
Vini, eu baixei o MySQL query browser, porém não consigo criar uma FK por ele.
aparece MySQL Error Nr. 1064.
informando erro na sintaxe mas, como pode aparecer erro na sintaxe se foi feito pelo programa?
Pelas linhas de código que você postou acima ele aceitou perfeitamente, mas se eu tento criar pelo programa ao clica na aba Foreign Keys, não aparece a tabela nem a coluna e foreign column.
Eu tenho duas tabelas:
Livro e Editora
preciso colocar o id da editora e como FK na tabela livro.
Tabela = Editora
Campo = id
Tabela = Livro
Campo = editora_id
eu só gostaria de conseguir pelo programa caso me depare com o mesmo problema futuramente.
desde já agradeço.
Obs: desculpe se postei no lugar errado esta é a primeira vez ¬¬
Eduardo,
vc tem que referenciar a pk a sua respectiva fk no workbench e criar um none para esta associação.
Vlw