实现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