添加mysql出错:Cannot add or update a child row: a foreign key constraint fails

我出的这个错误我百度了半天,发现都是一样的答案,对我没什么用。所以在这记录一下我的这个错误原因和解决的办法。

我的程序:

pstmt1=conn.prepareStatement(sql1);
			pstmt2=conn.prepareStatement(sql2);
			//插入topic表
			pstmt1.setInt(1, topic.getTopicID());
			pstmt1.setString(2, topic.getTopicContent());
			pstmt1.setString(3, topic.getTopicAnswer());
			pstmt1.setInt(4, topic.getTopicFraction());
			pstmt1.setString(5, topic.getTopicType());
			//插入topicOption表
			if(("单选题").equals(topic.getTopicType())||("多选题").equals(topic.getTopicType())) {
			pstmt2.setInt(1,topic.getTopicID());
			pstmt2.setString(2,topic.getTopicOptionContent().getOption()[0]);
			pstmt2.setString(3,topic.getTopicOptionContent().getContent()[0]);
			pstmt2.setString(4,topic.getTopicOptionContent().getOption()[1]);
			pstmt2.setString(5,topic.getTopicOptionContent().getContent()[1]);
			pstmt2.setString(6,topic.getTopicOptionContent().getOption()[2]);
			pstmt2.setString(7,topic.getTopicOptionContent().getContent()[2]);
			pstmt2.setString(8,topic.getTopicOptionContent().getOption()[3]);
			pstmt2.setString(9,topic.getTopicOptionContent().getContent()[3]);
			j=pstmt2.executeUpdate();
			}
			i=pstmt1.executeUpdate();

这是把一串数据写到两个表中,子表中有一个外键,这意味着在你插入主表的数据之前,你是不可以向子表中插入主表不存在的字段。而我在执行
j=pstmt2.executeUpdate();//insert子表
之后执行
i=pstmt1.executeUpdate();//insert主表
这必然会报错,因为现在主表中还没有数据。
把这两个语句调换一下位置,错误即可避免。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值