首页 新闻 会员 周边

oracle 主键自增

0
[待解决问题]

 我的oracle是pl/sql 12c 的版本,设置自增列,是怎么创建的,

CREATE SEQUENCE emp_sequence INCREMENT BY 1 -- 每次加几个 START WITH 1 -- 从1开始计数 NOMAXVALUE 99999999 -- 不设置最大值 NOCYCLE -- 一直累加,不循环 NOCACHE -- 不建缓冲区

CREATE TRIGGER emp_sequences BEFOREINSERT ON example FOR EACH ROW WHEN (new.id is null) beginselect emp_sequence.nextval into: new.id from dual; end emp_sequence ;

这样创建是有问题的,也不知道哪儿出问题了。

shf123的主页 shf123 | 菜鸟二级 | 园豆:202
提问于:2014-06-11 10:20
< >
分享
所有回答(1)
0

关于id自增功能,也很简单,而且比较灵活。
(1)首先建立一个序列(就是每次查询会自动增加值的绝不重复的对象,比如每次加1或每次加10)。语法:
CREATE SEQUENCE 序列名
[INCREMENT BY n]     --每次加几
[START WITH n] 搜索        --序列从几开始
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}] --最小值、最大值的限制
比如CREATE SEQUENCE s_test start with 1 increment by 1;   --就是建立了额一个从1开始每次加1的序列。
访问序列时,用  序列名称.nextval的语法。

(2)增加一个触发器,如果是insert,则取序列号值,赋予主键列
CREATE OR REPLACE TRIGGER TRI_tab
BEFORE INSERT ON tab FOR EACH ROW
DECLARE
-- LOCAL VARIABLES HERE    
BEGIN
IF :NEW.id IS NULL THEN
SELECT SEQ_tab.NEXTVAL INTO :NEW.id FROM DUAL;
END IF;
END TRI_tab;

itlong | 园豆:224 (菜鸟二级) | 2014-06-16 16:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册