ORACLE自增字段的问题,希望高手帮忙解决,谢谢。 现在想创建一个表,ID自增为TUR200812250001(TUR+日期+自增号)这样的形式,用什么方法比较好?很着急,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 TUR||to_char(sysdate,'yyyymmdd')||sequence名字.next以前看过的,每天把seq重置就好了 用触发器结合ORACEL自增序列就可以做了,在触发器里对插入动作的时候,触发类似如下语句就行INSERT INTO MYTABLE(ID,……) VALUES('TUR'||SYSDATE||MYSEQUENCE.NEXTVAL,……) 更正一点INSERT INTO MYTABLE(ID,……) VALUES('TUR'¦¦to_char(sysdate,'yyyymmdd')¦¦MYSEQUENCE.NEXTVAL,……) 用序列+触发器实现!触发器中:new.Id='TUR'||to_char(sysdate,'yyyymmdd')||lpad(seq.nextval,5,'0');具体序列+触发器实现自增的方法,google一下! 建立序列:CREATE SEQUENCE seq_idIncrement By 1Start With 1MaxValue 99999NoCacheCycleOrder;INSERT INTO your_table (...) VALUES('TUR'||to_char(sysdate,'yyyymmdd')||to_char(seq_id.nextval,'fm00000'),....); 之所以要重置,是可能由于seq的长度不够,会导致重复记录,如seq的最大值为999,当你一天中插入第1000条记录时,则seq又变成001了,则与第一条记录的id相同;如果你能保证每天插入的记录不会超过seq的最大长度,则无需重置。 可以增加个job,每天0点整的时候重置序列,具体如何重置序列,自己可以存储过程让job每天来调,存储过程写法可参照:http://blog.csdn.net/bzszp/archive/2005/03/15/320288.aspx 恩这是个好办法,再加上JOB 就OK了.. 也可以封装成一个方法。每次新增就Get一下。 oracle中dblink ora-12154:tns无法解析指定的连接标标识符 问一下这样的存储过程为啥建立job会出现这样的失败? 我在C#的界面的一个textbox里输入了一个数据,然后我想把这个数据应用到我连接到的ORACLE数据库里做一个表名。请问有高手知道吗?数据 一个小问题,各位大侠帮帮忙! oracel 9i的下载地址???? 关于时间比较的问题 oracle有没有类似MSSQL的系统表? 请问怎么向我的这个表中插入一行记录???? 怎样把表中的一条记录的每个字段减去另一条记录,结果更新到原记录? SQL语句错误吗? 急救!!! to_date函数 看看你是怎么理解的
INSERT INTO MYTABLE(ID,……) VALUES('TUR'||SYSDATE||MYSEQUENCE.NEXTVAL,……)
INSERT INTO MYTABLE(ID,……) VALUES('TUR'¦¦to_char(sysdate,'yyyymmdd')¦¦MYSEQUENCE.NEXTVAL,……)
触发器中
:new.Id='TUR'||to_char(sysdate,'yyyymmdd')||lpad(seq.nextval,5,'0');
具体序列+触发器实现自增的方法,google一下!
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'),....);
http://blog.csdn.net/bzszp/archive/2005/03/15/320288.aspx