主键ID自增但是要和系统日期组合插入值,求解!!??

xiyiren 2003-10-17 10:29:49
我用序列和触发器能解决自增问题,但是要求插入的ID与字符和系统日期组合,例如:序列+1后,插入ID号值要求是‘Q200310170001’这样的形式,也就是要字符'Q'+sysdate+序列号,据我所知序列中是不能以0001这样的形式返回的,想得头都大了,有哪位大哥做过这,帮帮小弟,谢谢!!
...全文
56 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiyiren 2003-10-18
  • 打赏
  • 举报
回复
搞定了,感谢楼上两位热心的兄弟!马上结贴!
tsj68 2003-10-18
  • 打赏
  • 举报
回复
sql> select 'Q'||to_char(sysdate,'yyyymmdd')||to_char(tang.nextval,'fm0000') from dual

'Q'||TO_CHAR(S
--------------
Q200310180005
tsj68 2003-10-18
  • 打赏
  • 举报
回复
用to_char函数,例如:
SQL> select to_char(99,'00000') from dual;

TO_CHA
------
00099
xiyiren 2003-10-18
  • 打赏
  • 举报
回复
感觉楼上的兄弟给我的解决方法,已经解决非常感谢,但还有一个问题想请教一下你,因为'000'+ID要进行一个条件判断如下:
if seq1.nextval<10 then
SELECT 'Q'||to_char(sysdate,'yyyymmdd')||'000'||seq1.nextval
INTO :new.TEST_ID
FROM dual;
elsif seq1.NEXTVAL<100 then
SELECT 'Q'||to_char(sysdate,'yyyymmdd')||'00'||seq1.nextval
INTO :new.TEST_ID
FROM dual;
但是这样子写的无法编译成功,是LADD.NEXT值不能作为条件来判断吗??应该怎么写啊,要多少分都给啊一定帮帮小弟:!!
welyngj 2003-10-17
  • 打赏
  • 举报
回复
for example:
1 create trigger tbl3a
2 before insert
3 on tbl3
4 for each row
5 begin
6 select 'Q'||sysdate||'000'||seq1.nextval into :new.a from dual;
7* end;

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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