Oracle不允许在建表时直接指定某个字段自增,需要通过建立序列
所以想要为某个字段指定自增,需要1.建表;2.建立序列;3.建立触发器
一:建表语句
Oracle数据库建表语句
ORACLE中的关键字这里均用大写表示,中括号表示可选填或不填
CREATE TABLE 表名
(
字段名1 字段类型 【NULL | NOTNULL 】【PRIMARY KEY①】,
字段名2 字段类型 【NULL | NOTNULL 】②
);
①:oracle可以通过在末尾写PRIMARY KEY(列名)的方式指定某一个列为主键。
②:oracle常用字段类型number,表示数字,可以存放整数或者小数,
number(N)表示存放N位的整数,number(N,M)表示存放长度为N的小数,精确到M位,含小数点
varchar/varchar2,二者区别读者自己百度,这里不做详解。
date 日期类型,timestamp 时间戳类型
注意,oracle中没有int和integer类型。
示例语句如下:
create table student
(
s_id number(11) not null primary key,
name varchar(20) not null,
age number(6) not null,
record_data date
);
为字段添加注释
comment on column student.s_id is '学生表ID';
comment on column student.name is '学生名称';
comment on column student.age is '学生年龄';
comment on column student.record_data is '记录时间';
二、建立自增序列
CREATE SEQUENCE 序列名 -- 建议使用表名+字段名+seq后缀
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
NOCACHE -- 不建缓冲区
三、建立触发器
CREATE TRIGGER 触发器名
BEFORE INSERT 表名 FOR EACH ROW WHEN (NEW.主键名 IS NULL)
BEGIN
SELECT 序列名.NEXTVAL INTO:NEW.主键名 FROM DUAL;
END;