flvMoreno Postado Agosto 5, 2013 Denunciar Share Postado Agosto 5, 2013 Boa Noite Galera !! Sou novo por aqui, e estou com uma dúvida sobre chave estrangeira no mysql, simplesmente, não cria !!!! é o seguinte, estou com um pequeno banco de dados aqui para um futuro software de lanchonete... porem, quando vou criar a tabela de movimentação de entrada, não consigo de maneira alguma a tabela é essa CREATE TABLE IF NOT EXISTS `lanchoneteDB`.`MOV_ENTRADA` ( `ID_MOV_ENTRADA` INT NOT NULL AUTO_INCREMENT , `DATA_MOV_ENTRADA` DATETIME NULL , `VLRLIQUIDO_MOV_ENTRADA` DECIMAL(15,2) NULL , `VLRBRUTO_MOV_ENTRADA` DECIMAL(15,2) NULL , `NR_MOV_ENTRADA` INT NULL , `VLRDESC_MOV_ENTRADA` DECIMAL(15,2) NULL , `ID_CAD_FORNECEDOR` INT NULL , PRIMARY KEY (`ID_MOV_ENTRADA`) , INDEX `ID_CAD_FORNECEDOR_idx` (`ID_CAD_FORNECEDOR` ASC) , CONSTRAINT `ID_CAD_FORNECEDOR` FOREIGN KEY (`ID_CAD_FORNECEDOR` ) REFERENCES `lanchoneteDB`.`CAD_FORNECEDOR` (`ID_CAD_FORNECEDOR` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB a Tabela CAD_FORNECEDOR já existe, e ID_CAD_FORNECEDOR é a PK dela, se alguém enchergar alguma coisa estranha, por favor me avise, estou pirando com isso !!!! Grato! Link para o comentário Compartilhar em outros sites More sharing options...
0 Markus Magnus Postado Agosto 6, 2013 Denunciar Share Postado Agosto 6, 2013 (editado) Eu nunca trabalhei com tabelas em InnoDB, mas essas duas consultas funcionaram para mim. CREATE TABLE IF NOT EXISTS `CAD_FORNECEDOR` ( `ID_CAD_FORNECEDOR` INT NOT NULL AUTO_INCREMENT , PRIMARY KEY (`ID_CAD_FORNECEDOR`) ) ENGINE = InnoDB; CREATE TABLE IF NOT EXISTS `MOV_ENTRADA` ( `ID_MOV_ENTRADA` INT NOT NULL AUTO_INCREMENT , `DATA_MOV_ENTRADA` DATETIME NULL , `VLRLIQUIDO_MOV_ENTRADA` DECIMAL(15,2) NULL , `VLRBRUTO_MOV_ENTRADA` DECIMAL(15,2) NULL , `NR_MOV_ENTRADA` INT NULL , `VLRDESC_MOV_ENTRADA` DECIMAL(15,2) NULL , `ID_CAD_FORNECEDOR` INT NULL , PRIMARY KEY (`ID_MOV_ENTRADA`) , INDEX `ID_CAD_FORNECEDOR_idx` (`ID_CAD_FORNECEDOR` ASC) , CONSTRAINT `ID_CAD_FORNECEDOR` FOREIGN KEY (`ID_CAD_FORNECEDOR` ) REFERENCES `CAD_FORNECEDOR` (`ID_CAD_FORNECEDOR` ) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE = InnoDB; Eu utilizo Xubuntu versão 12.04 MySQL 5.5.32-0ubuntu0.12.04.1 Conjunto de caracteres MySQL: UTF-8 Unicode (utf8) Apache/2.2.22 (Ubuntu) Versão do cliente MySQL: 5.5.32 Extensão do PHP: mysqli phpMyAdmin: 3.4.10.1deb1 OBS.: Executei a consulta pelo phpMyAdmin Editado Agosto 6, 2013 por Markus Magnus Link para o comentário Compartilhar em outros sites More sharing options...
0 flvMoreno Postado Agosto 6, 2013 Autor Denunciar Share Postado Agosto 6, 2013 Eu nunca trabalhei com tabelas em InnoDB, mas essas duas consultas funcionaram para mim. CREATE TABLE IF NOT EXISTS `CAD_FORNECEDOR` ( `ID_CAD_FORNECEDOR` INT NOT NULL AUTO_INCREMENT , PRIMARY KEY (`ID_CAD_FORNECEDOR`) ) ENGINE = InnoDB; CREATE TABLE IF NOT EXISTS `MOV_ENTRADA` ( `ID_MOV_ENTRADA` INT NOT NULL AUTO_INCREMENT , `DATA_MOV_ENTRADA` DATETIME NULL , `VLRLIQUIDO_MOV_ENTRADA` DECIMAL(15,2) NULL , `VLRBRUTO_MOV_ENTRADA` DECIMAL(15,2) NULL , `NR_MOV_ENTRADA` INT NULL , `VLRDESC_MOV_ENTRADA` DECIMAL(15,2) NULL , `ID_CAD_FORNECEDOR` INT NULL , PRIMARY KEY (`ID_MOV_ENTRADA`) , INDEX `ID_CAD_FORNECEDOR_idx` (`ID_CAD_FORNECEDOR` ASC) , CONSTRAINT `ID_CAD_FORNECEDOR` FOREIGN KEY (`ID_CAD_FORNECEDOR` ) REFERENCES `CAD_FORNECEDOR` (`ID_CAD_FORNECEDOR` ) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE = InnoDB; Eu utilizo Xubuntu versão 12.04 MySQL 5.5.32-0ubuntu0.12.04.1 Conjunto de caracteres MySQL: UTF-8 Unicode (utf8) Apache/2.2.22 (Ubuntu) Versão do cliente MySQL: 5.5.32 Extensão do PHP: mysqli phpMyAdmin: 3.4.10.1deb1 OBS.: Executei a consulta pelo phpMyAdmin Entendo, consegui criar a tabela, trocando apenas o nome da FK... perdoe minha ignorancia, mais qual é a diferença das tabelas em InnoDB ? Obrigado pela ajuda! Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Agosto 8, 2013 Denunciar Share Postado Agosto 8, 2013 Constraints são restrições que tem por objetivo impedir que seu banco de dados fique inconsistente. O Engine InnoDB permite que você faça constraints no banco, através das cláusulas Foreign Key e Constraint, que impedem que acidentalmente se remova e/ou altere dados em uma tabela pai e acabe deixando a tabela filha sem vínculo. Um outro engine, muito utilizado pelo MySQL, é o MyISAM. Este engine não faz constraints ao nível do banco. Link para o comentário Compartilhar em outros sites More sharing options...
0 flvMoreno Postado Agosto 8, 2013 Autor Denunciar Share Postado Agosto 8, 2013 Constraints são restrições que tem por objetivo impedir que seu banco de dados fique inconsistente. O Engine InnoDB permite que você faça constraints no banco, através das cláusulas Foreign Key e Constraint, que impedem que acidentalmente se remova e/ou altere dados em uma tabela pai e acabe deixando a tabela filha sem vínculo. Um outro engine, muito utilizado pelo MySQL, é o MyISAM. Este engine não faz constraints ao nível do banco. Entendo... por estar iniciando agora trabalhos com mysql, acredito que tenha bastante coisa para aprender de qualquer maneira agradeço a todos, muito obrigado pela explicação Denis. abraço. Link para o comentário Compartilhar em outros sites More sharing options...
0 flvMoreno Postado Agosto 8, 2013 Autor Denunciar Share Postado Agosto 8, 2013 sendo assim, acho que o tópico já pode ser concluído Obrigado. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
flvMoreno
Boa Noite Galera !!
Sou novo por aqui, e estou com uma dúvida sobre chave estrangeira no mysql, simplesmente, não cria !!!!
é o seguinte, estou com um pequeno banco de dados aqui para um futuro software de lanchonete...
porem, quando vou criar a tabela de movimentação de entrada, não consigo de maneira alguma
a tabela é essa
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados