Oracle自增数据类型的实现方法
作者:张桂权
如果你经常使用Informix、MySQL等数据库,那么你会发现数据库系统本身提供了一种“自增的数据类”,比如Informix的SERIAL变量类型。你只需要在CREATE TABLE时将字段定义为SERIAL类型,就可以实现变量值的自动增长,使用起来非常方便。但是如果你使用的Oracle数据库,那么你就需要自己来实现这个机制了。其实,实现起来也很简单,你只需要创建一个SEQUENCE变量和一个基于目标数据库的TRIGGER(触发器),其他没有什么特别的地方。你甚至会发现Oracle的机制比Informix的机制更加灵活,因为你可以控制自增变量的起点和增量的大小。比如,你可以定义一个从1开始增长,每次增长5的自增机制(当然,这种设计一般没有任何使用价值)。以下用简单的学生记录表为例,说明如何进行Oracle自增机制的实现。
(1)创建基础表结构:
----------------------------------------
CREATE TABLE student
(
id NUMBER,
name VARCHAR2(40),
age NUMBER,
sex VARCHAR2(1),
address VARCHAR2(128),
hponeNumber VARCHAR2(16),
PRIMARY KEY(id)
);
(2)创建SEQUENCE变量:以1为基点,每次增1
CREATE SEQUENCE student_seq START WITH 1 INCREMENT BY 1;
(3)创建TRIGGER
CREATE OR REPLACE TRIGGER student_trigger
BEFORE INSERT ON student
FOR EACH ROW
BEGIN
SELECT student_seq.nextval INTO :new.id FROM dual;
END;
/
(4)现在自增机制已经建好了,只要你每往student表INSERT一条记录,id的值会自增1,其中自增的基点是1。