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,会报错的。。。但是这个主键我又要系统生成流水号,所以不知如何处理,请各位高手指教 展开
现在我想要生成类似 年+季度+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,会报错的。。。但是这个主键我又要系统生成流水号,所以不知如何处理,请各位高手指教 展开
4个回答
展开全部
请把你的数据库类型说明一下,ms sql? oracle?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写个存储过程吧.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2009-04-01
展开全部
补充一下:数据库是mssql
茗茶堂 能不能再具体一点?主键那个问题如何解决?
茗茶堂 能不能再具体一点?主键那个问题如何解决?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询