实现Oracle自动编号列,使用触发器实现

实现Oracle自动编号列,使用触发器实现。


由于oracle没有自动编号类型所以只能自己实现,不像mysql,sqlserver都有自动编号类型在这里就不多说了。

以下使用触发器实现自动编号,以t_user表为例,以user_id列为实现自动编号的列名。
我使用的是Oracle SQL*PLUS操作如下SQL语句的,以下我测试通过。


1.创建表

create table t_user(
   user_id     number(20),
   user_name   varchar(10),
   user_phone varchar(20),
   user_mobile varchar(20)
);

2.对自动编号列创建索引
create unique index user_id_idx on t_user(user_id);


3.创建递增值序列SQL语句

drop sequence user_seq;
create sequence user_seq
minvalue 1
maxvalue 9999999
start with 1
increment by 1
nocache
order;

 

4.创建触发器

为t_user表创建一个触发器,实现每次新增记录时,user_id列自动递增编号。

create or replace trigger user_id_trigger before
insert on t_user for each row
declare next_no number;
begin
select user_seq.nextval
into next_no
from temp_db;
:NEW.user_id:=next_no;
end;

/


5.完

操作4个步聚就可以完成了,如果你已有表了就使用以上从第二个步聚开始就可以了。

 


附加命令:

列出数据库名
select name from v$database;

列出表结构
desc table_name

 

 

转自: http://hi.baidu.com/happyjnt/blog/item/2a57021e4f563dfa1bd57695.html

 

posted @ 2012-05-02 09:23  蒋小飞  阅读(342)  评论(0)    收藏  举报