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

Inserir Em Tabela Com Fk


Guest --pernambuco --

Pergunta

Guest --pernambuco --

Amigos,

Me perdoe pela dúvida se for muito básica mas é que sou iniciante mesmo e minha dúvida é a seguinte:

São 3 tabelas:

Condominio - Apartamento - Inquilino

Em Apartamento tem o num_apartamento, nome_condominio e como chaves estrangeiras tem "cod_condominio" e "cod_inquilino", como eu faria uma inserção nessa tabela??

Não sei se ficou confuso minha explicação, qualquer coisa me avisem que tento explicar melhor.

*Esse é o código que tentei, estou usando o PHP.

//recebe os valores do formulario

$numero = $_POST['numApartamento'];

$condominio = $_POST['condominio'];

//insere valores no banco

$sql = "INSERT INTO apartamento (

num_apartamento, nome_condominio)

VALUES (

'". $numero ."',

'". $condominio ."'

)";

$query = mysql_query($sql)

or die(mysql_error());

*Esse é o erro que dá:

Cannot add or update a child row: a foreign key constraint fails (`condominio/apartamento`, CONSTRAINT `apartamento_ibfk_1` FOREIGN KEY (`condominio_codigo`) REFERENCES `condominio` (`codigo`))

*Não sei como colocar no código as chaves estrangeiras.

Agradeço desde já qualquer esclarecimento,

Obrigado,

Eduardo(PERNAMBUCO).

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Guest --pernambuco --

Legal, inseri dados nas outras tabelas... o erro mudou, vejam o erro:

Cannot add or update a child row: a foreign key constraint fails (`condominio/apartamento`, CONSTRAINT `apartamento_ibfk_2` FOREIGN KEY (`inquilino_cpf`) REFERENCES `inquilino` (`cpf`) ON DELETE NO ACTION ON UPDATE NO ACTION)

*Abaixo está o script do banco, tem algo relacionado???

CREATE TABLE inquilino (

cpf VARCHAR(14) NOT NULL,

nome VARCHAR(50) NULL,

telefone VARCHAR(10) NULL,

celular VARCHAR(10) NULL,

condominio VARCHAR(30) NULL,

apartamento INTEGER UNSIGNED NULL,

tempo INTEGER UNSIGNED NULL,

PRIMARY KEY(cpf)

)

TYPE=InnoDB;

CREATE TABLE condominio (

codigo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

nome VARCHAR(30) NULL,

endereco VARCHAR(50) NULL,

bairro VARCHAR(30) NULL,

cidade VARCHAR(30) NULL,

estado VARCHAR(30) NULL,

cep VARCHAR(9) NULL,

numero INTEGER UNSIGNED NULL,

proximidade VARCHAR(50) NULL,

qtd_apartamentos INTEGER UNSIGNED NULL,

PRIMARY KEY(codigo)

)

TYPE=InnoDB;

CREATE TABLE apartamento (

num_apartamento INTEGER UNSIGNED NOT NULL,

inquilino_cpf VARCHAR(14) NOT NULL,

condominio_codigo INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

nome_condominio VARCHAR(30) NULL,

PRIMARY KEY(num_apartamento),

INDEX apartamento_FKIndex1(condominio_codigo),

INDEX apartamento_FKIndex2(inquilino_cpf),

FOREIGN KEY(condominio_codigo)

REFERENCES condominio(codigo)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

FOREIGN KEY(inquilino_cpf)

REFERENCES inquilino(cpf)

ON DELETE NO ACTION

ON UPDATE NO ACTION

)

TYPE=InnoDB;

Obrigado!!!

Eduardo(PERNAMBUCO).

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, Eduardo!

Pelo que entendi, você está cometendo um erro de lógica em seu modelo.

O conceito simples para este modelo é um condomínio tem um ou vários apartamentos e um apartamento tem um ou vários inquilinos. Inquilino é tabela "FILHA de Apartamentos que é tabela "FILHA de condominio.

Segundo sua base, o conceito está em: um condominio tem um ou mais apartamentos e um inquilino está em um ou mais apartamentos.

Neste seu caso (vide as constraits), quando da inclusão, Inquilino e condomínio devem ser cadastrados antes de apartamentos e, pior, quando da exclusão deve-se deletar primeiro apartamentos para depois deletar o inquilino ou condimínio, senão haverá erro de integridade referencial.

Você tornou Inquilino e condomínio como tabelas "PAI" e apartamentos como tabela "FILHA" destes dois.

Lembre-se a rotatividade de inquilinos entre apartamentos é maior que a de apartamentos em condomínio.

Pense e informe o que decidiu.

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,3k
×
×
  • Criar Novo...