浏览 5380 次
锁定老帖子 主题:Oracle中实现自增长列
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-16
在使用Oracle数据的过程中,经常会用到自增长列,但Oracle并没有提供直接实现自增长的方法,下面我们来看看如何自己实现此功能。
步骤一:创建序列 -- CREATE SEQUENCE CREATE SEQUENCE INNERID MINVALUE 1 MAXVALUE 99999999999999 START WITH 1 INCREMENT BY 1 CACHE 20 ORDER; 步骤二:创建表 CREATE TABLE ADMIN2 (ID VARCHAR2(20),NAME VARCHAR2(10));
步骤三:使用INNERID的属性插入值: --INNERID.currval 指当前序列 --INNERID.nextval 指下一个序列 --不断的插入序列的下一个值. INSERT INTO ADMIN2 VALUES (INNERID.NEXTVAL,'A'); INSERT INTO ADMIN2 VALUES (INNERID.NEXTVAL,'B'); INSERT INTO ADMIN2 VALUES (INNERID.NEXTVAL,'C'); INSERT INTO ADMIN2 VALUES (INNERID.NEXTVAL,'D'); 得到的结果: ID NAME 1 A 2 B 3 C 4 D 虽然通过上面的方式我们可以实现自增长列,但是还可以通过触发器实现更简单的操作。
步骤四:在ADMIN2表上创建触发器 --ADMIN2 ID 的触发器 CREATE OR REPLACE TRIGGER ADMIN_TG BEFORE INSERT ON ADMIN2 FOR EACH ROW BEGIN SELECT INNERID.NEXTVAL INTO :NEW.ID FROM DUAL; END; 步骤五:通过简单的方式插入记录: INSERT INTO ADMIN2 (NAME) VALUES ( 'ZDZ2'); INSERT INTO ADMIN2 (NAME) VALUES ( 'ZDZ3'); INSERT INTO ADMIN2 (NAME) VALUES ( 'ZDZ4'); INSERT INTO ADMIN2 (NAME) VALUES ( 'ZDZ5'); 查询结果: ID NAME 5 ZDZ2 6 ZDZ3 7 ZDZ4 8 ZDZ5
参考资料:http://tech.ccidnet.com/art/1107/20080528/1460789_1.html 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |