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中