A表
B表A是主表,B表中某字段是外键关联到A表的id字段现在我要向两表同时插入记录用什么方法?
先添加A表,再从A表取出新添加记录的id,然后再向B表添加记录
如果用这种方法添加,假如B表添加失败,就会导至两表数据不一至了。
B表A是主表,B表中某字段是外键关联到A表的id字段现在我要向两表同时插入记录用什么方法?
先添加A表,再从A表取出新添加记录的id,然后再向B表添加记录
如果用这种方法添加,假如B表添加失败,就会导至两表数据不一至了。
解决方案 »
- JSP中用EL在URI重寫中傳中文,到下個頁面中接收中文時出現了亂碼
- 大家做JSP开发都是用什么软件
- 如何把一个Serializable的对象,存到Mysql数据库的Blob里?
- 谁有编译好的linux9 tomcat5.0 JDK1.4.2的mod_jk2.so文件,发一个个我.地址:[email protected]
- 问一个提交的问题~大伙帮忙解决下~!!
- tools.jar加入到%TOMCAT_HOME%/lib/下还是出错,不知道为何
- 妹妹求助(最近问题比较多,分也所剩无几。望给为大侠帮助)
- 请教,指条光明大道
- JSP中的include,能否包含一个绝对路径?
- COM.ibm.db2.jdbc.net.DB2Driver 和COM.ibm.db2.jdbc.app.DB2Driver有什么不同?
- java调用function获取plsql的对象数组,不知道哪有问题,帮忙看下啊
- 开机报Tomcat错误
---------------------------------
事务
嵌套事务
主区间
嵌套事务
附属区间
事务
-----------------------------------
理论实现方式似乎有几十种,都忘记了。但是就记住一个!insert 主表数据
insert 依赖主表数据 将依赖字段先置为null然后在关联数据。
//ResultSet rs = null;
PreparedStatement pstmt = null; try{
conn = DB.getConn();
DB.setAutoCommit(false, conn); String sql = "insert into pager(name) values(?)";
pstmt = DB.prepareStmt(conn, sql);
pstmt.setString(1, pager.getName());
pstmt.execute(); sql = "insert into Provider(pagerId,userId) values(?,?)";
pstmt = DB.prepareStmt(conn, sql);
pstmt.setInt(1, "上面插入记录的id怎么取得" )
pstmt.setInt(2, 2)
pstmt.execute(); DB.commit(conn);
DB.setAutoCommit(true, conn);
String sql = "insert into table values(...)";
objConn.executeUpdate(sql);下面是取刚插入数据库的ID号
long ret_id=0;
ResultSet rs = objConn.executeQuery("select LAST_INSERT_ID()");
if (rs.next())ret_id = rs.getLong(1);
string sqlSelectNewUserId = "SELECT @@Identity"; // OR "SELECT MAX([UserId]) FROM [User]"; 在sql server中,好像是使用@@Identity来获取最新插入的ID,或者后面的方法!
先插A
然后取刚插进去的记录拿到ID
然后再插B
将以上3部都作为一个事物.同样也可以在数据库层做这些事情.