Dúvida com Foreign Key

6 respostas
rapha.java

Bom dia,

Nunca usei chaves estrangeiras devido a pouco experiencia em banco, mas estou fazendo uma aplicação onde tenho duas tabelas. Uma tabela possui um id_heliponto e a outra tabela (Pouso/Decolagem) possui esse mesmo id. Mas na hora de fazer o insert into na tabela é mostrado o seguinte erro : ( código e erro ).
public void criarPousoDecolagem(PousoDecolagemModel model)
			throws SQLException {
		sql = "insert into tb_pouso_decolagem (id_pouso_dec,NM_AUTORI, dt_pouso) values (?,?,?)";
		stmt = getCon.prepareStatement(sql);
		stmt.setInt(1, model.getId);
		stmt.setString(2, model.getAutorizante());
		stmt.setDate(3, null);//provisorio
		stmt.execute();
		stmt.close();
		getCon.close();
		System.out.println("Método...");

	}
ERRO:
SEVERE: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails
javax.faces.el.EvaluationException: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails

6 Respostas

Hebert_Coelho

A tabela tb_pouso_decolagem tem mais colunas?

rapha.java

Sim, mas estou adicionando primeiro nestes tres campos primeiro

Hebert_Coelho

Algumas dessas outras colunas é FK?

rapha.java
jakefrog:
Algumas dessas outras colunas é FK?
Nossa falha minha. Na verdade o id_pouso_dec é chave primária e existe um outro campo o "id_heliponto" que este sim é chave estrangeira!
public void criarPousoDecolagem(PousoDecolagemModel model)
			throws SQLException {
		sql = "insert into tb_pouso_decolagem (id_heliponto, NM_AUTORI, dt_pouso) values (?,?,?)";
		stmt = getCon.prepareStatement(sql);
		stmt.setInt(1, o que inserir aqui);
		stmt.setString(2, model.getAutorizante());
		stmt.setDate(3, null);
		stmt.execute();
		stmt.close();
		getCon.close();
		System.out.println("Método...");

	}
mudei mas continua o mesmo erro !
Hebert_Coelho

Verifique se suas FKs podem ser null. Caso você esteja passando valor, verifique se esse registro já existe na outra tabela.

rapha.java

Exceto os campos q eu mostrei e a chave primaria, os outros aceitam nulo.

Criado 6 de dezembro de 2011
Ultima resposta 6 de dez. de 2011
Respostas 6
Participantes 2