问题描述
往数据库里插入blob,要先插空,然后update,但从插入数据不能判断哪条是最后插入的,怎样可以获得最后插入的那条数据?谢谢了。。。问题补充:现在数据库确定了,我不能随便改,所以不能添加自增长的标识列。。。但原本数据库里有个VARCHAR类型的,我给它添加了seq,让它每次增1,可以通过这个获得最大的吗??问题补充:To:ham我小菜,刚开始写程序,你说的问题没有想到,现在写东西都只是简单的实现,好多情况都没考虑,呵呵。。。另外你说的seqRow是我创建的sequence+Row吗??但是我执行说“此处不允许序号”。。谢谢你了,哈哈。。。
解决方案
可以用sequence进行操作.使用SELECT * FROM tableName WHERE seqRow=seqRow.CURRVAL;就可以获取到最后一条记录了.关于楼主这个问题...如果在插入了一个空行之后,还没来得及更新,另外一个操作又往里插入了一个空行,这种情况楼主是准备怎么处理的?
解决方案二:
Oracle中没有像SQL-Server和MySQL中的直接获取刚插入行的存储过程或函数.所以只能通过一个自增长的标识列进行获取.每次就获取标识列值最大的那一行数据,就是最后插入的了.SELECT * FROM table_name WHERE rowid=(SELECT max(rowid) FROM table_name);
解决方案三:
先查询满足条件的数据集合比如Collection<T> result = findByHQLNative(hql, params);然后再if (result == null || result.size() == 0)return null;elsereturn (T) result.iterator().next();就是最后的那条数据了