自动增长字段
在设计数据库的时候,有时需要表的某个字段是自动增长的,最常使用自动增长字段的就是表的主键,使用自动增长字段可以简化主键的生成.不同的DBMS中自动增长字段的实现机制也有不同,下面分别介绍。MYSQL 中设定一个字段为自动增长字段非常简单,只要在表定义中指定字段为AUTO_INCREMENT即可.
例子:create table t_student
(
t_id int primary key auto_increment,
t_name varchar(50),
t_age int
);insert into t_student(t_name,t_age)values("King",22);
insert into t_student(t_name,t_age)values("Hong",22);Oracle 中的自动增长字段
Oracle中不像MYSQL和MSSQLServer中那样指定一个列为自动增长列的方式,不过在Oracle中可以通过SEQUENCE序列来实现自动增长字段.
在使用SEQUENCE前需要首先定义一个 SEQUENCE,定义 SEQUENCE 的语法如下:CREATE SEQUENCE sequence_name
INCREMENT BY step
START WITH startvalue;
其中sequence_name为序列的名字,每个序列都必须有唯一的名字;startvalue参数值为起始数字,step参数值为步长,即每次自动增长时增加的值.
一旦定义了SEQUENCE,你就可以用CURRVAL来取得SEQUENCE的当前值,也可以通过NEXTVAL来增加SEQUENCE,然后返回新的SEQUENCE值,比如:sequence_name.CURRVAL
sequence_name.NEXTVAL
如果SEQUENCE不需要的话就可以将其删除:DROP SEQUENCE sequence_name;
下面举一个使用SEQUENCE序列实现自动增长的例子.
首先创建一个名称为seq_PersonId的SEQUENCE:create sequence seq_t_person
increment by 1
start with 1;
然后创建T_Person表:CREATE TABLE T_Person
(
FId NUMBER (10) PRIMARY KEY,
FName VARCHAR2( 20) ,
FAge NUMBER ( 10)
) ;
执行上面的 SQL 语句后就创建成功了 T_Person 表,然后执行下面的 SQL 语句向
T_Person 表中插入一些数据:INSERT INTO T_Person( FId, FName, FAge)
VALUES( seq_PersonId.NEXTVAL, ' Tom' , 18) ;
INSERT INTO T_Person( FId, FName, FAge)
VALUES( seq_PersonId.NEXTVAL, ' Jim' , 81) ;
INSERT INTO T_Person( FId, FName, FAge)
VALUES( seq_PersonId.NEXTVAL, ' Kerry' , 33) ;