sql生成年月日格式的流水号

如info表,里面有id、name、type字段,id为主键,type是001、002、。。。等类似的三位格式数据现在我想要生成类似年+季度+type+顺序种子编号这样的... 如info表,里面有id、name、type字段,id为主键,type是001、002、。。。等类似的三位格式数据
现在我想要生成类似 年+季度+type+顺序种子编号 这样的流水号
例如我插入一个name='test1',type='001'的项,则自动生成200901001001
表示2009年第一个季度type=001的第一个项目。这时候我如果再插入一个type=001的项,那id就应该是2009001002了,而如果插入一个type=002的项,id就应该是2009002001了,有点绕。。。

现在又两个难点:一个就是这个id的生成,原理知道一点,需要取出表中的max(id),如果没有就是001第一个了,想知道有没有更好更安全的办法(因为去max的话,并发的问题不好处理)

第二个问题就是:因为id列是主键,所以插入的时候如果只插入name和type,会报错的。。。但是这个主键我又要系统生成流水号,所以不知如何处理,请各位高手指教
展开
 我来答
茗茶堂
2009-04-01 · TA获得超过682个赞
知道小有建树答主
回答量:346
采纳率:100%
帮助的人:0
展开全部
1、建立一个序列sequence:seq_id
2、to_char(SYSDATE,'yyyyQ')||type||seq_id.nextval
晁明轩l3
2009-03-31 · TA获得超过104个赞
知道答主
回答量:61
采纳率:0%
帮助的人:0
展开全部
请把你的数据库类型说明一下,ms sql? oracle?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fupx2008
2009-04-01 · TA获得超过687个赞
知道小有建树答主
回答量:1203
采纳率:0%
帮助的人:780万
展开全部
写个存储过程吧.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-04-01
展开全部
补充一下:数据库是mssql
茗茶堂 能不能再具体一点?主键那个问题如何解决?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式