一、介绍:
在设计数据库时,有时候希望表的某一列为自增列,例如编号,本文就介绍如何在oracle数据库中实现自增列,需要两个步骤:
1)构建序列(sequence)
在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。
2)构建触发器(trigger)
构建完序列后,就需要构建一个触发器,当往某一个表中插入数据时,触发器会从序列中取出一个序列号,插入到该表的自增列中
二、示例:
1、在oracle中创建一个表:USER
create table USER
(
ID NUMBER(8),
NAME VARCHAR2(32),
AGE NUMBER(3)
)
;
2、创建一个sequence:seq_user_id
create sequence seq_user_id
minvalue 1
maxvalue 99999999
start with 1
increment by 1
nocache
order;
3、创建一个tirgger:trg_user_id
CREATE OR REPLACE TRIGGER trg_user_id
BEFORE INSERT ON USER
FOR EACH ROW
BEGIN
SELECT seq_user_id.nextval INTO :new.id FROM dual;
END;
4、测试自增列,插入一条数据
insert into user (name,age) values ('zhang',25);
就可以看到数据库中新增了一条记录,
id | name | age |
1 | zhang | 25 |
三、备注:
按照上面的步骤,就可以实现oracle数据库的自增列。某些情况下,我们希望数据库的自增列为字符串形式,例如user表的id为varchar2类型,此时如何实现自增列
create table USER
(
ID VARCHAR2(8),
NAME VARCHAR2(32),
AGE NUMBER(3)
)
;
答案也很简单,只需要修改tirgger:trg_user_id如下:
CREATE OR REPLACE TRIGGER trg_user_id
BEFORE INSERT ON USER
FOR EACH ROW
BEGIN
SELECT TO_CHAR(seq_user_id.nextval) INTO :new.id FROM dual;
END;