Oracle主键自增方法
代码
/*创建一个用户表*/
CREATE TABLE TB_INCREASE(
ID number(10) primary key, /*主键,自动增加*/
UNAME varchar2(10)
);
/*创建一个增长序列*/
CREATE SEQUENCE TBINCREASE_SEQUENCE
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;
/*创建一个自增触发器*/
CREATE TRIGGER TB_INCREASE BEFORE
INSERT ON TB_INCREASE FOR EACH ROW
BEGIN
SELECT TBINCREASE_SEQUENCE.NEXTVAL INTO:New.ID FROM DUAL;
END;
CREATE TABLE TB_INCREASE(
ID number(10) primary key, /*主键,自动增加*/
UNAME varchar2(10)
);
/*创建一个增长序列*/
CREATE SEQUENCE TBINCREASE_SEQUENCE
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;
/*创建一个自增触发器*/
CREATE TRIGGER TB_INCREASE BEFORE
INSERT ON TB_INCREASE FOR EACH ROW
BEGIN
SELECT TBINCREASE_SEQUENCE.NEXTVAL INTO:New.ID FROM DUAL;
END;
这样一个过程之后,测试数据
insert into tb_increase(uname) values('fdsafs');
执行几次再看看表的结果,就会看到id是从1开始依次往上增.
另外有两个问题需要注意的事,增长序列器可以多个表共用,但触发器只能一个表一个触发器.
多表共用一个序列器时, 几个不会出现重复的ID值,这要根据系统的需要而作设计