oracle中实现自动增长列不能够像 SqlServer中在 表中直接加标示,而是要借助序列来实现。下面简单介绍一下,oracle中实现自动增长列的一个方法
步骤:
1 创建一个序列来实现自动增长。
create sequence user_sequence1
start with 1 ----初值
increment by 1 --增量
nomaxvalue --没有最大值
nocycle --不能循环
nocache --不缓存
注意:序列创建完成时不能加 ;结束
2 创建一个表
create table student(
id numbert,
name varchar2(10)
)
3 测试
insert into student values (user_sequence1.nextval,'aaa');
select * from student;
这样能够实现自动增长列的添加,但是 我们现在一般都是 数据库和程序分离 所以我们最好能够在数据库中把自动增长写好 而程序中只需要加值不需要知道 你是创建的那个序列。
步骤:
1 和上面的第一个一样 省略
2 和上面的一样 省略
3 创建一个触发器
create or replace trigger user_trigger1
before insert on student
for each row
declare
tempnum number;
begin
select user_sequence1.nextval into tempnum from dual;
:new.id :=tempnum;
end;
4 测试
insert into student values (5,'aaa');
select * from student;
说明:这里还是需要给一个number类型的值,但是无论给什么值它都是按照序列的值填充的。所有我们可以在设计数据库的时候给数据库默认值 然后我们添加的时候直接给 default即可。
步骤:
1 创建一个序列来实现自动增长。
create sequence user_sequence1
start with 1 ----初值
increment by 1 --增量
nomaxvalue --没有最大值
nocycle --不能循环
nocache --不缓存
注意:序列创建完成时不能加 ;结束
2 创建一个表
create table student(
id numbert,
name varchar2(10)
)
3 测试
insert into student values (user_sequence1.nextval,'aaa');
select * from student;
这样能够实现自动增长列的添加,但是 我们现在一般都是 数据库和程序分离 所以我们最好能够在数据库中把自动增长写好 而程序中只需要加值不需要知道 你是创建的那个序列。
步骤:
1 和上面的第一个一样 省略
2 和上面的一样 省略
3 创建一个触发器
create or replace trigger user_trigger1
before insert on student
for each row
declare
tempnum number;
begin
select user_sequence1.nextval into tempnum from dual;
:new.id :=tempnum;
end;
4 测试
insert into student values (5,'aaa');
select * from student;
说明:这里还是需要给一个number类型的值,但是无论给什么值它都是按照序列的值填充的。所有我们可以在设计数据库的时候给数据库默认值 然后我们添加的时候直接给 default即可。