Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) erro ao criar uma foreing key


hippy

Pergunta

Boa tarde, já li alguns posts aqui no forum, mas não resolvo o meu problema.

alguém ajuda por favor?

Tabela 1:

CREATE TABLE `compra` (

`id_compra` int(10) UNSIGNED NOT NULL,

`acao` varchar(10) NOT NULL,

`preço` decimal(13,2) NOT NULL DEFAULT '0.00',

`quantidade` int(10) UNSIGNED NOT NULL,

`data` date NOT NULL,

`id_corretora` int(10) NOT NULL,

`id_carteira` int(10) UNSIGNED NOT NULL,

`corretagem` decimal(13,2) NOT NULL,

`registro` decimal(13,2) NOT NULL,

`emolumentos` decimal(13,2) NOT NULL,

`quant_venda` int NOT NULL DEFAULT '0',

`index` int(10) UNSIGNED AUTO_INCREMENT NOT NULL,

/* Keys */

PRIMARY KEY (`index`)

) ENGINE = InnoDB;

Tabela 2:

CREATE TABLE `compra_venda` (

`id_compra` int(10) UNSIGNED NOT NULL,

`id_venda` int(10) UNSIGNED NOT NULL,

`quant_venda` int(10) UNSIGNED NOT NULL,

`index` int(10) UNSIGNED NOT NULL,

/* Keys */

PRIMARY KEY (`index`)

) ENGINE = InnoDB

Foreing key:

ALTER TABLE `compra`

ADD CONSTRAINT `fk_compra`

FOREIGN KEY (`id_compra`)

REFERENCES `compra_venda`(`id_compra`)

ON DELETE CASCADE

ON UPDATE CASCADE;

Erro:

SQL Error: Can't create table '.\ajainvest\#sql-1620_63.frm' (errno: 150)

Obrigado.

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Oi, 'hippy'!

Seus índices estão errados.

Qual tabela é o lado 1 do relacionamento 1:N entre compra e compra_venda?

Este lado deverá "emprestar" seu atributo, que é chave primária, para a outra tabela. Nesta outra tabela (o lado N do relacionamento o atributo vindo da primeira tabela será a foreign key.

Exemplo: Supondo que compra é o lado 1 do relacionamento, então id_compra deverá ser a chave primária desta tabela. Na tabela compra_venda você colocará o atributo id_compra e criará a foreign key com esta chave referenciando a tabela compra. Entendeu?

Link para o comentário
Compartilhar em outros sites

  • 0
Oi, 'hippy'!

Seus índices estão errados.

Qual tabela é o lado 1 do relacionamento 1:N entre compra e compra_venda?

Este lado deverá "emprestar" seu atributo, que é chave primária, para a outra tabela. Nesta outra tabela (o lado N do relacionamento o atributo vindo da primeira tabela será a foreign key.

Exemplo: Supondo que compra é o lado 1 do relacionamento, então id_compra deverá ser a chave primária desta tabela. Na tabela compra_venda você colocará o atributo id_compra e criará a foreign key com esta chave referenciando a tabela compra. Entendeu?

Poxa Denis,

inicialmente parabéns pela agilidade, mal postei e já respondeu, e ainda respondeu certo, pois agora tenho a foreing key corretamente criada.

Com certeza estarei postando outras dúvidas aqui.

Aproveitando, como eu posso postar o que estou desenvolvendo para receber críticas construtivas? Você dá alguns palpites?

Obrigado.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...