在表中有个字段是 reportno (报告号) 不是主键.
每次插入数据之前都需要生成的新的报告号.
生成的规则如下:
STQS001-CN2003005 下次生成 STQS001-CN2003006 后三位递增
操作语句是: select max(reportNo) maxReportNo from 表名 where reportNo like 'STQS001-CN2003___'
然后取最大的后三位数加1
同理:
STQS002-CN2003023 下次生成 STQS001-CN2003006
DTQS034-CN2008012 下次生成 DTQS034-CN2008013
等等...
这样操作就有个问题,如果2个人同时操作数据库,同时查出的max(reportNo)是一样的,插入到数据库的时候就会出现相同的 reportNo 就会有错误了.
但是考虑到用 sequences 就需要创建多个sequences ,维护起来比较困难.
想找个好的解决办法,请高手指教!!!
谢谢!
每次插入数据之前都需要生成的新的报告号.
生成的规则如下:
STQS001-CN2003005 下次生成 STQS001-CN2003006 后三位递增
操作语句是: select max(reportNo) maxReportNo from 表名 where reportNo like 'STQS001-CN2003___'
然后取最大的后三位数加1
同理:
STQS002-CN2003023 下次生成 STQS001-CN2003006
DTQS034-CN2008012 下次生成 DTQS034-CN2008013
等等...
这样操作就有个问题,如果2个人同时操作数据库,同时查出的max(reportNo)是一样的,插入到数据库的时候就会出现相同的 reportNo 就会有错误了.
但是考虑到用 sequences 就需要创建多个sequences ,维护起来比较困难.
想找个好的解决办法,请高手指教!!!
谢谢!
上边有个错误!不好意思!!同理:
STQS002-CN2003023 下次生成 STQS001-CN2003024
DTQS034-CN2008012 下次生成 DTQS034-CN2008013
等等...
谢谢啊 那这样的话 别人是不是还可以 进行 select 啊?
该锁表了。