关于ORACLE中的自动增量的问题?

wabc 2003-03-12 12:55:42
有没有办法象MS-SQL Server和IBM DB2那样,创建一个内置的自动增量类型,而不用再在insert语句中调用一个seqence.
...全文
74 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdqhlyf 2003-06-11
  • 打赏
  • 举报
回复
我已从中受益
bzszp 2003-03-12
  • 打赏
  • 举报
回复
这已经是最方便的方法了
jinxrsl 2003-03-12
  • 打赏
  • 举报
回复
先建一个sequence,再建一个trigger,然后在Insert语句中你就不用在理这个自动增长的字段了。
example:
1:sequence:
CREATE SEQUENCE seq_TlogList start with 1 increment by 1;
2: trigger:
CREATE OR REPLACE TRIGGER tr_TlogList_Insert
BEFORE INSERT ON TlogList
FOR EACH ROW
BEGIN
SELECT seq_TlogList.nextval
INTO :new.serial_no
FROM dual;
END tr_TlogList_Insert;

一切OK了。
developer2002 2003-03-12
  • 打赏
  • 举报
回复
'所以,习惯了MS-SQL Server和IBM DB2的程序员怕难以接受Oracle这个特性。'呵呵,那就只能让他们接受这个特性.
to(心雨):重建序列规0.或者创建循环序列,到max值之后自动从min值开始
xinyu_1980 2003-03-12
  • 打赏
  • 举报
回复
那么怎样让seqence归零?
SCCDTANG 2003-03-12
  • 打赏
  • 举报
回复
用序号生成器可以得到这种效果,用法如下

建立序号生成器
CREATE sequence addid1 increment by 1 START WITH 1;
得到当前的序号:
select addid1.currval from dual ;
得到下一个序号:
select addid1.nextval from dual ;
insert into dept values(seq1.nextval,...) ;

  • 打赏
  • 举报
回复
只能用seqence
wabc 2003-03-12
  • 打赏
  • 举报
回复
可是和MS-SQL Server和IBM DB2相比,还是不够方便。

表(数据库)的设计者和sql语句的编写者通常不是一个人,普通sql语句的编写者也不愿意了解太多的数据库设计细节,所以,习惯了MS-SQL Server和IBM DB2的程序员怕难以接受Oracle这个特性。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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