oracle建表 和 设置主键自增

时间:2024-05-05 15:05:20

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中

oracle建表 和 设置主键自增