在使用Oracle数据的过程中,经常会用到自增长列,但Oracle并没有提供直接实现自增长的方法,下面我们来看看如何自己实现此功能。
步骤一:创建序列
Sql代码 -- CREATE SEQUENCE CREATE SEQUENCE INNERID MINVALUE 1 MAXVALUE 99999999999999 START WITH 1 INCREMENT BY 1 CACHE 20 ORDER; -- CREATE SEQUENCE CREATE SEQUENCE INNERID MINVALUE 1 MAXVALUE 99999999999999 START WITH 1 INCREMENT BY 1 CACHE 20 ORDER;步骤二:创建表
Sql代码 CREATE TABLE ADMIN2 (ID VARCHAR2(20),NAME VARCHAR2(10)); CREATE TABLE ADMIN2 (ID VARCHAR2(20),NAME VARCHAR2(10));
步骤三:使用INNERID的属性插入值:
--INNERID.currval 指当前序列
--INNERID.nextval 指下一个序列
--不断的插入序列的下一个值.
Sql代码 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'); 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');得到的结果:
Java代码 ID NAME 1 A 2 B 3 C 4 D ID NAME 1 A 2 B 3 C 4 D虽然通过上面的方式我们可以实现自增长列,但是还可以通过触发器实现更简单的操作。
步骤四:在ADMIN2表上创建触发器
Sql代码 --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; --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;步骤五:通过简单的方式插入记录:
Sql代码 INSERT INTO ADMIN2 (NAME) VALUES ( 'ZDZ2'); INSERT INTO ADMIN2 (NAME) VALUES ( 'ZDZ3'); INSERT INTO ADMIN2 (NAME) VALUES ( 'ZDZ4'); INSERT INTO ADMIN2 (NAME) VALUES ( 'ZDZ5'); INSERT INTO ADMIN2 (NAME) VALUES ( 'ZDZ2'); INSERT INTO ADMIN2 (NAME) VALUES ( 'ZDZ3'); INSERT INTO ADMIN2 (NAME) VALUES ( 'ZDZ4'); INSERT INTO ADMIN2 (NAME) VALUES ( 'ZDZ5');查询结果:
Java代码 ID NAME 5 ZDZ2 6 ZDZ3 7 ZDZ4 8 ZDZ5 ID NAME 5 ZDZ2 6 ZDZ3 7 ZDZ4 8 ZDZ5