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 数据表中实现字段的自动增长的主要内容,如果未能解决你的问题,请参考以下文章