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

Integridade referencial


Gilbeto F. T

Pergunta

Olá,

Estou tentando fazer integridade referencial no my 6.0 e dá erro #150. Segue as tabelas

CREATE TABLE `tbdepto` (
  `idDepto` int(11) NOT NULL AUTO_INCREMENT,
  `Depto` varchar(40) DEFAULT NULL,
  PRIMARY KEY (`idDepto`),
  UNIQUE KEY `idDepto` (`idDepto`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

CREATE TABLE `tbfuncao` (
  `idFuncao` int(11) NOT NULL AUTO_INCREMENT,
  `Funcao` varchar(40) DEFAULT NULL,
  `idDepto` int(11) NOT NULL,
  PRIMARY KEY (`idFuncao`),
  UNIQUE KEY `idFuncao` (`idFuncao`),
  KEY `idDepto` (`idDepto`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Alguma dica ?????

Obrigado.

Editado por Denis Courcy
Melhorar Entendimento
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Oi, 'Gilbeto F. T'

Retire as instruções abaixo:

UNIQUE KEY `idDepto` (`idDepto`) na tabela tbdepto

UNIQUE KEY `idFuncao` (`idFuncao`), na tabela tbfuncao

KEY `idDepto` (`idDepto`) na tabela tbfuncao

Elas são redundantes.

Inclua a seguinte instrução

ALTER TABLE `tbfuncao`
ADD CONSTRAINT FK_tbfuncao_001 FOREIGN KEY (`idDepto`) REFERENCES `tbdepto`(`idDepto`) ON DELETE NO ACTION ON UPDATE NO ACTION;

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, 'Gilbeto F. T'

Verifiquei o tipo de erro (121) e ele está relacionado com duplicidade de chave.

experimente adicionar a linha DROP TABLE IF EXISTS antes da instrução CREATE TABLE

Verifique, também se há duplicidade na chave que você está tentando inserir.

O termo FK_tbfuncao_001 que coloquei é o nome do índice. ele deve ser único em todo o banco de dados. Por acaso você não está duplicando este nome?

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...