我有一个数据库oracle,有两个表user1,user2,user字段有(id,name),
user2有字段(id,content),现在要做的操作是如下这些,希望能在同一个事务中去做,
con2.setAutoCommit(false);
String sql1="insert into user1 (id,name) values (1,'abcddd')";
String sql2="select * from user1 where name='abcddd'";
sql3="insert into user2 (id,content) values (1,"sfdf");
con2.commit();
其中我的流程有点特殊,必须要等user1表的纪录插入后,取出其id,然后再插入到user2表的id字段中去,但
commit前根本没写到数据库,所以id编号是去取不出来,有什么好的办法解决呢?
楼主错了,commit之前你的数据只是对别的session不可见,但是对你当前session是可见的。所以,只要是使用同一个connection,是可以select出来你的ID的。
呵呵 可以考虑下自己来生成ID啊?根据时间生成肯定不会重复的。。。
如果id是知道的话,可以用jdbc事务来控制,语句执行完就可以提交commit。这样就可以达到你的目的。
从你SQL语句来看,你的ID 应是提前就知道的(并不是取SEQUCE),所以你的逻辑应是没问题的。如果你的ID想要的是取SEQUCE,那也简单,可以先写一个SQL语句,从数据库里查出来,然后分别INSERT这两张表,也是没问题呀