本文共 1408 字,大约阅读时间需要 4 分钟。
CREATE TABLE example(
ID Number(4)
NOT NULL PRIMARY KEY,
NAME VARCHAR(25),
PHONE
VARCHAR(10),
ADDRESS
VARCHAR(50)
);
CREATE SEQUENCE emp_sequence
INCREMENT
BY 1
-- 每次加几个 START
WITH 1
-- 从1开始计数 NOMAXVALUE
-- 不设置最大值 NOCYCLE
-- 一直累加,不循环 NOCACHE
-- 不建缓冲区 以上代码完成了一个序列(sequence)的建立过程,名称为emp_sequence,范围是从1开始到无限大(无限大的程度是由你机器决定的),nocycle 是决定不循环,如果你设置了最大值那么你可以用cycle 会使seq到最大之后循环.对于nocache顺便说一下如果你给出了cache值那么系统将自动读取你的cache值大小个seq,这样在反复操作时会加快运行速度,但如果遭遇意外情况如当机了或oracle死了,则下次取出的seq值将和上次的不连贯.(如果连不连贯无所谓建议用cache,因为时间就是金钱呀!) 步骤3.
你只有了表和序列还不够,还需要一个触发器来执行它! 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;
打完收工!下面你就试试插入数据吧! INSERT INTO example(Name,phone,address) Values('ma','1234567','shanghai'); - SQL> create table address(addressId integer not null primary key, province varchar(20),community varchar(20), street var
- char(20), houseNumber integer);
-
- 表已创建。
- SQL> CREATE SEQUENCE addr_seq
- 2 INCREMENT BY 1
- 3 START WITH 1
- 4 NOMAXVALUE
- 5 NOCYCLE
- 6 NOCACHE
- 7 ;
-
- 序列已创建。
- SQL> CREATE TRIGGER "addr_trigger" BEFORE
- 2 INSERT ON address FOR EACH ROW WHEN (new.addressId is null)
- 3 begin
- 4 select addr_seq.nextval into :new.addressId from dual;
- 5 end;
- 6 /
-
- 触发器已创建
本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/252665,如需转载请自行联系原作者