多表插入时,如何处理数据的主键?

零点三六 发布于 2012/02/20 12:02
阅读 1K+
收藏 0

需求是这样:  往A表插入一条数据, 当A表的字段A.a=1 , 则往B表也插入一条数据,并且B表的字段b.aid = A.id

我目前是这样的, 在一个事物中,先通过sequence获取A表的主键,然后将数据插入A表, 做业务逻辑判断后,将数据插入B表.前后1次查询,两次插入一共是3个语句, 有更好的方法吗?

加载中
0
鉴客
鉴客

具体的数据库和编程语言环境是?

如果是 Java 挺简单,插入 A 表时返回自增长 ID ,然后程序再往 B 表插入该 ID 值

0
IdleMan
IdleMan
触发器可否解决
0
零点三六
零点三六

问题已经解决

谢谢欧阳锋的回复,触发器的确是一种很好的解决方案,只是个人觉得维护代码的工作量增加了,并且项目后期很可能更换数据库,所以还是在程序中实现.

开发环境是oracle+mybatis, 才知道原来mybatis插入数据时,会返回插入的数据

0
南北024
南北024

引用来自“amar”的答案

问题已经解决

谢谢欧阳锋的回复,触发器的确是一种很好的解决方案,只是个人觉得维护代码的工作量增加了,并且项目后期很可能更换数据库,所以还是在程序中实现.

开发环境是oracle+mybatis, 才知道原来mybatis插入数据时,会返回插入的数据

mybatis有这功能?
0
零点三六
零点三六

 

public interface AreaDAO
{ public void addArea( Area area );}

在service中执行

 

{
Area area = new Area();
area.setName("aa");       // 不设置id
dao.addArea(area);        // 插入数据库
log.info( area.getID() ); //id已经被赋值
}

返回顶部
顶部