Oracle中实现自增长列
在使用Oracle数据的过程中,经常会用到自增长列,但Oracle并没有提供直接实现自增长的方法,下面我们来看看如何自己实现此功能。
?
步骤一:创建序列
-- CREATE SEQUENCE CREATE SEQUENCE INNERIDMINVALUE 1MAXVALUE 99999999999999START WITH 1INCREMENT BY 1CACHE 20ORDER;
?步骤二:创建表
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');
?得到的结果:
IDNAME1A2B3C4D
?虽然通过上面的方式我们可以实现自增长列,但是还可以通过触发器实现更简单的操作。
?
步骤四:在ADMIN2表上创建触发器
--ADMIN2 ID 的触发器CREATE OR REPLACE TRIGGER ADMIN_TGBEFORE INSERT ON ADMIN2 FOR EACH ROWBEGINSELECT 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');
?查询结果:
IDNAME5ZDZ26ZDZ37ZDZ48ZDZ5
?
参考资料:http://tech.ccidnet.com/art/1107/20080528/1460789_1.html