重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
oracle不想sql
目前创新互联公司已为千余家的企业提供了网站建设、域名、网络空间、网站托管运营、企业网站设计、邯山网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
server一样有一个自增长属性可以设置。oracle如果需要自增长需要使用序列。
主要的实现过程:
1、创建序列
-- Create sequence
create sequence SEQ_NAME
minvalue 1
maxvalue 9999999999
start with 1
increment by 1
cache 20
order;
其中SEQ_NAME是自定义的序列名称,上面那个创建序列的意思是开始序列号是1,序列增量是1,最小值是1,高速缓存大小是20
2、调用序列作为主键
select seq_name.nextval from dual;---查询seq_name序列的下一个数值
insert into tablename (a,b) value (seq_name.nextval,'b');--获取下一个序列值插入数据库中
oracle 中不能设置自动增加,这个和其他数据库不一样,但是有 序列,这个是Oracle自己特有的东西,
首先创建序列:
create sequence seq;
这就创建好了,然后 seq.nextval 就会返回一个值,不会重复的值,
insert into tablename values(seq.nextval,'001','javabook');
insert into tablename values(seq.nextval,'001','javabook');
insert into tablename values(seq.nextval,'001','javabook');
看明白没?这样前3个id 分别是 1,2,3
首先,Oracle中没有像MySQL那样的id自增长功能
如果要用Oracle这么做的话首先要先建一个表,如:
CREATE
TABLE
test(
ID
Number(4)
NOT
NULL
PRIMARY
KEY,
NAME
VARCHAR(25),
PHONE
VARCHAR(10),
ADDRESS
VARCHAR(50));
然后,你需要一个自定义的sequence:
CREATE
SEQUENCE
emp_sequence
INCREMENT
BY
1
--
每次加几个
START
WITH
1
--
从1开始计数
NOMAXVALUE
--
不设置最大值
NOCYCLE
--
一直累加,不循环
NOCACHE
--
不建缓冲区
你只有了表和序列还不够,还需要一个触发器来执行它:
CREATE
TRIGGER
"触发器名称"
BEFORE
INSERT
ON
example
FOR
EACH
ROW
WHEN
(new.id
is
null)
begin
select
emp_sequence.nextval
into:
new.id
from
dual;
end;
这时你再向test表中插数据就可以不用管id了