mybatis 如何同时向主表和从表插入数据

qq_34865322 2017-02-27 02:48:10
假设 主表(userinfos):用户id:userid(主键);用户名:username;从表(bankcards):卡号:cardid;userid(外键),money(钱)
用的是mysql数据库
我是这样写的
<insert id="saveUsers" parameterType="user">
insert into userinfos (username) values(#{username})
<selectKey keyProperty="userid" resultType="int">
SELECT LAST_INSERT_ID() AS userid
</selectKey>
</insert>
<insert id="saveCards" parameterType="user">
insert into bankcards (userid,money) values(#{userid},#{money})
</insert>
但是一直报错:

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException:
### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`mytest`.`bankcards`, CONSTRAINT `FK_user_card` FOREIGN KEY (`userid`) REFERENCES `userinfos` (`userid`))
### The error may involve com.njbdqn.dao.UsersDao.saveCards-Inline
### The error occurred while setting parameters
### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`mytest`.`bankcards`, CONSTRAINT `FK_user_card` FOREIGN KEY (`userid`) REFERENCES `userinfos` (`userid`))
; SQL []; Cannot add or update a child row: a foreign key constraint fails (`mytest`.`bankcards`, CONSTRAINT `FK_user_card` FOREIGN KEY (`userid`) REFERENCES `userinfos` (`userid`)); nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`mytest`.`bankcards`, CONSTRAINT `FK_user_card` FOREIGN KEY (`userid`) REFERENCES `userinfos` (`userid`))
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:659)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:563)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

求帮助
...全文
4325 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Z. ZHANG 2017-03-01
  • 打赏
  • 举报
回复
外键约束 一定好好想想 比如删除啊 插入啊 都要先把外键给搞定才行
小灯光环 2017-02-28
  • 打赏
  • 举报
回复
你这个有外键约束,先insert子表,再insert主表,写到一个事务中就可以了
此处值为空 2017-02-28
  • 打赏
  • 举报
回复
用事物吧 先插主表,再插从表,其中之一出错了,回滚

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧