hippy Postado Março 26, 2009 Denunciar Share Postado Março 26, 2009 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 More sharing options...
0 Denis Courcy Postado Março 26, 2009 Denunciar Share Postado Março 26, 2009 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 More sharing options...
0 hippy Postado Março 26, 2009 Autor Denunciar Share Postado Março 26, 2009 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 More sharing options...
0 Denis Courcy Postado Março 26, 2009 Denunciar Share Postado Março 26, 2009 Poste na área do fórum referente a linguagem que você está programando.Veja: Programação & Desenvolvimento Link para o comentário Compartilhar em outros sites More sharing options...
0 hippy Postado Março 26, 2009 Autor Denunciar Share Postado Março 26, 2009 Poste na área do fórum referente a linguagem que você está programando.Veja: Programação & DesenvolvimentoMas seria sobre a estrutura do meu banco mesmo! Queria saber se para o que estou fazendo é o mais indicado mesmo, se as SPs poderiam ser optimizadas e tal. Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Março 26, 2009 Denunciar Share Postado Março 26, 2009 Então crie novos tópicos aqui neste forum.Tópico encerrado. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
hippy
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