oracle 数据表中实现字段的自动增长

Posted 那爱多情

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 数据表中实现字段的自动增长相关的知识,希望对你有一定的参考价值。

由于一直用的是Mysql数据库,今天刚好心血来潮,想着和Java都是同一个老板出来的oracle自己却不会,说出去会不会有点丢人,故就开始翻资料,看视频搞起来,一步一个脚 印,想着写点什么,就开始从创建表开始吧,好了,废话不多说了,开始上正题创建一个表:

User表:

create table user(

   id number(5,0) not null primary key auto_increment,

   deptid number(5,0) not null,

   username varchar2(15) not null,

  password varchar2(15) not null,

  ,,,,,,,,,

  constraint fk_deptid foreign key(deptid) references department(id)

);

Department表

  create table department(

     id number(5,0) not null  primary key auto_incremnt,

    dept_name varchar2(20) notn ull

)

一切就这样顺其自然,感觉自己好牛B呀,两张表,代码一会就敲完了,想想这不是和Mysql创建数据表差不多吗,呵呵呵呵,,,,

 编译SQL 语句,,,怎么可能,怎么可能,竟然报错,再一次检查代码,感觉没有错误啊,再运行,还是报错,,,,oh, my god

查百度,再发现原来oracle设置自动增长字段不是这样,完全和Mysql的不一样,不一样啊

好吧,重新创建表:

User表

create table user(

id number(5) not null primary key ,

deptid number(5) not null,

username varchar2(20) not null,

password varchar2(20) not null,

,,,,,,

constraint fk_deptid foreign key(deptid) references department(id),

constraint un_username unique(username)

);

Department表

create table department(

id number(5) not null primary key,

deptname varchar2(20) not null

);

第二步,创建一个oracle序列user_increment_sequence

create sequence user_increment_sequence

    minvalue 1

    maxvalue 999999999

     increment by 1

    start with 1

    nocache;

第三步,该创建一个触发器user_increment_trigger

create or replace trigger user_increment_trigger

before insert 

for each row

begin 

select nextval into :new.id from dual;

end;

/

  第四步,检验成果,看是否能让字段自动增加

向user表中添加 一条数据 

insert into user values(2,‘kkk‘,‘kkk‘,‘kkk‘);                  ----------此处的2就外键部门号的字段

insert into user values(2,‘ddd‘,‘ddd‘,‘ddd‘);

查询,得到的数据显示刚好字段是自动增加的,至此,完毕 

以上是关于oracle 数据表中实现字段的自动增长的主要内容,如果未能解决你的问题,请参考以下文章

在oracle中创建自动增长字段

在oracle中创建自动增长字段

SQLIte如何设置自动增长的字段?

SQLIte如何设置自动增长的字段?

在SqlServer中怎样设置自动增长字段

Oracle怎么让varchar类型自动增长