再开Struts发过程中遇到一个编号自动生成的问题,甚是头疼,编号规则如下:系统当前日期+教师编号+自动增长的编号(date+teancherid+id),在每个教师提交报告时将自动生成的编号一并提交到数据库,问题主要出在后面自动增长的编号(id)上,要求教师每提交一个报告,编号自动加一,本人实在不知道把这个自动增长的操作写在什么位置,写在ActionForm中肯定不行(每次都回被重置),后来尝试取出当前登录教师曾经提交的纪录条数然后加1,但是后来发现,如果删除纪录后再提交会出现编号重复的问题,实在想不出好的办法,请高手帮忙!
采用同一个id:可以考虑保存在文件里;如果采用静态变量,系统重启就没了.
采用不同的id: 获取max(date+teancherid+id);写一个静态方法,使得id +1 就ok.
采用不同的id: 获取max(date+teancherid+id);写一个静态方法,使得id +1 就ok.具体点说就是:
1.select max(编号) as a where teancherid = ?;
2.针对得到的编号处理 b ;
假设:date+teancherid+id 为 20060804 0001 88
针对a,写一个静态方法得到 id, id+1则就是新自动增长的编号;
3.最终编号则就是currentdate + teancherid + b;希望对你有所帮助;
不是这样的吗?
我是根据你提供的信息来做的编号;如果数据量很大,建议采用number或者varchar.
a
================
1
----------------
2
-----------------
项目中广泛使用。