JAVA 插入两个有外键关系的表

suntingtingonly 2011-02-16 03:42:03
问题是这样的 我有两个表 一个表(A表)的主键(自动增长列) 是另一个表(B表)的外键
现在 我得到数据 要向这两个表中插入
但我插入 A表 后 再插入B 表 但是 B表中的外键那个字段 需要是插入A表中的主键字段的数值

请问 怎么解决
我想到的方法是 插入A表后 在查询出 A表插入是哪个主键的数值
有没有其他的方法
...全文
365 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ass3326524 2011-02-20
  • 打赏
  • 举报
回复
在mysql中是可以这么实现,你在创建PreparedStatement的时候这么写:
PreparedStatement pstm = conn.prepareStatement (sql,PreparedStatement.RETURN_GENERATED_KEYS);
在执行完插入操作后再获取主键值
ResultSet rs = pstm.getGeneratedKeys();
huhk 2011-02-20
  • 打赏
  • 举报
回复
可以写DB函数,直接操作两个table。
无聊找乐 2011-02-18
  • 打赏
  • 举报
回复
oracle 和sqlserver 处理方式不一样?
suntingtingonly 2011-02-18
  • 打赏
  • 举报
回复
谢谢 大家。 没有框架 自己写的JDBC 程序。 触发器不行。因为 B表插入的东西是我程序计算的结果。不能用触发器。
想问下还有没有其他的办法
如果数据库是ORACLE 这个我知道怎么做到
如果是SQLSERVER 数据库呢 问下大家这个怎么办?
tanrenzong1986 2011-02-16
  • 打赏
  • 举报
回复
如果是在spring框架下,不妨在pojo中就设置,把关联的外键字段注解为@joinColoum 就可以。
liumin_csu 2011-02-16
  • 打赏
  • 举报
回复
可以在A表上加个触发器:
1.当A表插入了你需要插入的记录后,A表的主键得了数据。触发器设定在A插入记录后向B表插入一条记录。
在触发器里插B表时将数据插入B的外键,以及B的主键(这里需要能区分的字段,方便等下插B表时使用)。
2.当你在代码里插B表时,根据B表的相关字段来修改此条记录,填充其他字段。

这个方法要根据你的具体业务来考虑,如果触发器在插B表时得不到2步骤在修改记录时需要的字段,则此方法行不通。

楼主的方法是行得通的,只是得多写代码,数据流向好像走了弯路。

希望对楼主有帮助。
linyfei 2011-02-16
  • 打赏
  • 举报
回复
我想知道的是你是在哪里操作这两张表啊?是在什么程序中?什么框架?什么数据库?

62,614

社区成员

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

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