由于ORACLE设置主键是不会自动增加的,所以必须用 序列 和 触发器 来完成主键的递增
1建立数据表
create
table
Test_Increase(
userid number ( 10 ) primary key , /*建立 主键 */
username varchar2 ( 20 )
);
userid number ( 10 ) primary key , /*建立 主键 */
username varchar2 ( 20 )
);
2创建自动增长序列
CREATE
SEQUENCE TestIncrease_Sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10 ;
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10 ;
3创建触发器
CREATE
TRIGGER
Test_Increase BEFORE
insert ON Test_Increase FOR EACH ROW
begin
select TestIncrease_Sequence.nextval into :New.userid from dual;
end ;
insert ON Test_Increase FOR EACH ROW
begin
select TestIncrease_Sequence.nextval into :New.userid from dual;
end ;
--------------------------------------------------------------------------------------------
如果出现以下问题
ORA-04098: 触发器无效且未通过重新验证问题
原因是:序列是在系统管理员权限下建的,而触发器又是在普通用户下建的,所以,在触发器中使用系统管理员权限下建的序列就无效了。
解决方法:同一个用户下建序列和触发器,即可。