oracle实现id自增
- 关于主键:
(1)在建表时指定primary key字句即可:
create table test(
id number(6) primary key,
name varchar2(30) );
(2)如果是对于已经建好的表,想增加主键约束,则类似语法:
alter table test add constraint pk_id primary key(id);
其中add constraint 和primary key是关键字,pk_id是主键名称,自定义的额,只要不重复即可;
- 关于id自增功能,也很简单,而且比较灵活。
(1)首先建立一个序列(就是每次查询会自动增加值的绝不重复的对象,比如每次加1或每次加10)。语法:
CREATE SEQUENCE 序列名
[INCREMENT BY n] --每次加几
[START WITH n] --序列从几开始
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}] --最小值、最大值的限制
比如
CREATE SEQUENCE s_test start with 1 increment by 1;
就是建立了额一个从1开始每次加1的序列。
访问序列时,用 序列名称.nextval的语法。
比如对于上表,如果想要id字段实现自增。则在每次插入记录时,使用下面类似的语法(前提是表和序列已经建好)。
insert into test values (s_test.nextval,'张三');
- 创建触发器,这样再导入数据时不需要加主键字段
create or replace trigger test_trigger
before insert
on test
for each row
begin
select s_test.nextval into :new.id from dual;
end ;
- 测试
添加数据
insert into test(name) values ('cc');
insert into test(name) values ('dd');
commit;