ORACLE自增字段的问题,希望高手帮忙解决,谢谢。

senhai 2008-04-18 09:57:28
现在想创建一个表,ID自增为TUR200812250001(TUR+日期+自增号)这样的形式,用什么方法比较好?
很着急,谢谢!
...全文
220 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
qing878 2008-07-18
  • 打赏
  • 举报
回复
谢谢了!
权子。 2008-04-21
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 HelloWorld_001 的回复:]
每天重置就从1开始了,
[/Quote]
恩这是个好办法,再加上JOB 就OK了..
19az 2008-04-21
  • 打赏
  • 举报
回复
可以增加个job,每天0点整的时候重置序列,具体如何重置序列,自己可以存储过程让job每天来调,存储过程写法可参照:
http://blog.csdn.net/bzszp/archive/2005/03/15/320288.aspx
SYUEHOKO 2008-04-21
  • 打赏
  • 举报
回复
关于采番...LZ好像没有什么概念!!!
panxuan 2008-04-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhpsam109 的回复:]
用序列+触发器实现!
触发器中
:new.Id='TUR' ¦ ¦to_char(sysdate,'yyyymmdd') ¦ ¦lpad(seq.nextval,5,'0');
具体序列+触发器实现自增的方法,google一下!
[/Quote]
也可以封装成一个方法。每次新增就Get一下。
HelloWorld_001 2008-04-18
  • 打赏
  • 举报
回复
每天重置就从1开始了,
realduke 2008-04-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 senhai 的回复:]
引用 1 楼 HelloWorld_001 的回复:
TUR ¦ ¦to_char(sysdate,'yyyymmdd') ¦ ¦sequence名字.next

以前看过的,每天把seq重置就好了



每天都要重置?怎么重置?
我比较菜不是很清楚。
[/Quote]
之所以要重置,是可能由于seq的长度不够,会导致重复记录,如seq的最大值为999,当你一天中插入第1000条记录时,则seq又变成001了,则与第一条记录的id相同;如果你能保证每天插入的记录不会超过seq的最大长度,则无需重置。
ngdgycc 2008-04-18
  • 打赏
  • 举报
回复
建立序列:
CREATE SEQUENCE seq_id
Increment By 1
Start With 1
MaxValue 99999
NoCache
Cycle
Order;

INSERT INTO your_table (...) VALUES('TUR'||to_char(sysdate,'yyyymmdd')||to_char(seq_id.nextval,'fm00000'),....);
senhai 2008-04-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 super_ssy 的回复:]
更正一点
INSERT INTO MYTABLE(ID,……) VALUES('TUR'¦¦to_char(sysdate,'yyyymmdd')¦¦MYSEQUENCE.NEXTVAL,……)
[/Quote]

OK!试一下!
senhai 2008-04-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhpsam109 的回复:]
用序列+触发器实现!
触发器中
:new.Id='TUR' ¦ ¦to_char(sysdate,'yyyymmdd') ¦ ¦lpad(seq.nextval,5,'0');
具体序列+触发器实现自增的方法,google一下!
[/Quote]

谢了!
zhpsam109 2008-04-18
  • 打赏
  • 举报
回复
用序列+触发器实现!
触发器中
:new.Id='TUR'||to_char(sysdate,'yyyymmdd')||lpad(seq.nextval,5,'0');
具体序列+触发器实现自增的方法,google一下!
super_ssy 2008-04-18
  • 打赏
  • 举报
回复
更正一点
INSERT INTO MYTABLE(ID,……) VALUES('TUR'¦¦to_char(sysdate,'yyyymmdd')¦¦MYSEQUENCE.NEXTVAL,……)
super_ssy 2008-04-18
  • 打赏
  • 举报
回复
用触发器结合ORACEL自增序列就可以做了,在触发器里对插入动作的时候,触发类似如下语句就行
INSERT INTO MYTABLE(ID,……) VALUES('TUR'||SYSDATE||MYSEQUENCE.NEXTVAL,……)
senhai 2008-04-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 HelloWorld_001 的回复:]
TUR ¦ ¦to_char(sysdate,'yyyymmdd') ¦ ¦sequence名字.next

以前看过的,每天把seq重置就好了
[/Quote]


每天都要重置?怎么重置?
我比较菜不是很清楚。
HelloWorld_001 2008-04-18
  • 打赏
  • 举报
回复
TUR||to_char(sysdate,'yyyymmdd')||sequence名字.next

以前看过的,每天把seq重置就好了

3,494

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧