随笔-57  评论-202  文章-17  trackbacks-0
      最近在做系统的Oracle移植,需要从MySQL移植到Oracle中,在MySQL中有自增类型的字段,在Oracle中却没有,需要用其它的办法实现。在Oracle中要用一个SEQUENCE和触发器实现。下面是我的一个实现:
 1CREATE TABLE FOO
 2(
 3   INDEX                          INT                            NOT NULL,
 4   ABC                            VARCHAR2(128),
 5   DEF                            VARCHAR2(128),
 6   PRIMARY KEY (INDEXID)
 7) TABLESPACE TEMP;
 8
 9CREATE SEQUENCE FOO_INDEXID INCREMENT BY 1 START WITH 1 MAXVALUE 999999999999 CYCLE NOCACHE;
10
11CREATE OR REPLACE TRIGGER INSERT_FOO_INDEXID
12BEFORE INSERT ON FOO
13REFERENCING
14    NEW AS new
15    OLD AS old
16FOR EACH ROW
17BEGIN
18    SELECT FOO_INDEXID.NEXTVAL INTO :new.INDEXID FROM DUAL;
19END;
posted on 2005-05-12 14:41 小米 阅读(1162) 评论(2)  编辑  收藏 所属分类: 数据库

评论:
# re: Oracle中的自增类型的实现 2007-06-04 08:25 | PF
楼主,int类型的长度不可能到“999999999999”,如此定义队列无意义的!

其实你可以不用考虑实例化,应该去自定义一种数据类型,建表引用即可  回复  更多评论
  
# re: Oracle中的自增类型的实现 2009-09-10 16:19 | ddkl
oracle就是喜欢搞这么多事出来  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: