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

flvMoreno

Pergunta

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

5 respostass a esta questão

Posts Recomendados

  • 0

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 por Markus Magnus
Link para o comentário
Compartilhar em outros sites

  • 0

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

  • 0

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

  • 0

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

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


  • Estatísticas dos Fóruns

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