Oracle建表并指定主键自增

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38668663/article/details/82968004

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;

 

猜你喜欢

转载自blog.csdn.net/qq_38668663/article/details/82968004