oracle建表 和 设置主键自增

1.新建table 

CREATE TABLE ysb_log(
  id number(8) primary key not  null ,
  tbdate varchar(50)  NULL,
  tb_time varchar(50) NOT NULL,
  tblog varchar(500) NOT NULL,
  tbreor varchar2(20) null,
  bs varchar(50) NOT NULL
  );

Oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方

2. 创建自增的序列号

create sequence S_ysb_log
minvalue 1
maxvalue 99999999 --最大的值
start with 1    
increment by 1
NOCYCLE -- 一直累加,不循环
nocache; --不建缓冲区

select  S_ysb_log.CURRVAL   from dual  --- 查寻当前的主键值,
select  S_ysb_log.Nextval from dual  -- 查询下一个值

3. 向表中插入数据:

insert into  ysb_log (id, tbdate , tb_time, tblog, tbreor ,bs )
values ( S_ysb_log.Nextval , '2016-7-21','10:01:00','dddd',null, 'OrderDown' )

4. 另一种方式: 是通过建立触发器由触发器去调用序列号:

--建完表和自增值后键一个触发器
create trigger mem_trig before
insert on ysb_log for each row when (new.id is null)
begin
 
 select S_ysb_log.nextval into:new.id from dual;
 
 end;
-------------------------
insert into  ysb_log (tbdate , tb_time, tblog, tbreor ,bs )
values ( '2016-7-21','10:01:00','dddddd',null, 'OrderDown' )

 

可以使用sequence的地方:
- 不包含子查询、snapshot、VIEW的 SELECT 语句
- INSERT语句的子查询中
- NSERT语句的valueS中
- UPDATE 的 SET中

 

posted @ 2017-08-26 12:19  游林  阅读(19792)  评论(0编辑  收藏  举报