Problemas com Foreign Key

3 respostas
ricardo.cocati

Boa tarde Pessoal,

Estou tendo problemas em criar uma foreign key em uma tabela de um banco existente(legado), estou usando o mysql query browser para isso mas ele está apresentando um erro quando tento criar essa chave estrangeira alterando minha tabela.

ALTER TABLE `colecao`.`album` MODIFY COLUMN `idnome_album` INT(10) NOT NULL DEFAULT NULL, MODIFY COLUMN `idnome_artista` INTEGER UNSIGNED NOT NULL DEFAULT NULL AUTO_INCREMENT, DROP PRIMARY KEY, ADD PRIMARY KEY USING BTREE(`idnome_album`), ADD CONSTRAINT `idnome_artista` FOREIGN KEY `idnome_artista` (`idnome_artista`) REFERENCES `artista` (`idnome_artista`) ON DELETE RESTRICT ON UPDATE RESTRICT;
O que ele me diz no erro é que o valor padrão é inválido para ‘idnome_album’

Támbem testei desta forma e não está funcionando:

ALTER TABLE `colecao`.`album` CHANGE COLUMN `idnome_artista` `FK_idnome_artista` INTEGER UNSIGNED NOT NULL,
 ADD CONSTRAINT `FK_idnome_artista` FOREIGN KEY `FK_idnome_artista` (`idnome_artista`)
    REFERENCES `artista` (`idnome_artista`)
    ON DELETE RESTRICT
    ON UPDATE RESTRICT;

O que poderia estar fazendo errado???

Agradeço desde já!!!

3 Respostas

A

cara, é o seguinte, para se ter um fk você precisa ter uma tabela de onde vem essa fk, no caso onde é feito o vínculo. Você já está com ela criada correto? se de possivel, poste aqui as tabelas relacionadas do seu bd para ficar um pouco mais claro do que se trata.

Abraços

GraveDigger

Esse sql está errado mesmo.

Voce tem uma coluna NOT NULL e está especificando um valor default NULL.

Ele está mostrando o erro para apenas uma coluna, mas o erro está nas duas.

Retire esse DEFAULT NULL que isso deve ser solucionado.

[]'s

ajfilho

AS vezes pode dar problema de adicionar um campo do tipo “not null” se a tabela já tiver sido populada. Como o campo é int, você pode colocar depois do ‘not null’ ‘default 0’.

Abraços!

Criado 19 de dezembro de 2008
Ultima resposta 30 de dez. de 2008
Respostas 3
Participantes 4