oracle 序列初始值的设定
3个回答
展开全部
你的意思是序列的NEXTVAL为SYSDATE的年月日+001或者正常序列的NEXTVAL?
这里的SYSDATE是用户调用时的时间?每次都不一样?
或者只是加上今天的20080909,如果这样的话,你直接以20080909001开始就OK了嘛,后面增1什么的。
如果是前面的意思的话,单纯序列是实现不了的,那要看你怎么用了,如果是要得到这样的值的话可以用连接啊,to_number(to_char(sysdate,'yyyymmdd')||'00'||seq.nextval 这样就OK了嘛
比如insert into table (id) values (to_char(sysdate,'yyyymmdd')||'00'||to_char(seq.nextval));
这里的SYSDATE是用户调用时的时间?每次都不一样?
或者只是加上今天的20080909,如果这样的话,你直接以20080909001开始就OK了嘛,后面增1什么的。
如果是前面的意思的话,单纯序列是实现不了的,那要看你怎么用了,如果是要得到这样的值的话可以用连接啊,to_number(to_char(sysdate,'yyyymmdd')||'00'||seq.nextval 这样就OK了嘛
比如insert into table (id) values (to_char(sysdate,'yyyymmdd')||'00'||to_char(seq.nextval));
展开全部
看似生成的这个码好像是主键或者主键的一部分吧?
可以写beforeinsert的触发器
但是这个不如写成存储过程的好 因为触发器在插入前触发,但是在插入内容的时候发生异常,造成不能插入的话,包含生成了id的记录会不会删除这条记录呢?
存储过程可以生成这个编码,而且在插入的时候如果失败就rollback,处理比较合理
可以写beforeinsert的触发器
但是这个不如写成存储过程的好 因为触发器在插入前触发,但是在插入内容的时候发生异常,造成不能插入的话,包含生成了id的记录会不会删除这条记录呢?
存储过程可以生成这个编码,而且在插入的时候如果失败就rollback,处理比较合理
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
写个触发器,让触发器生成主键
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询