Oracle 自增
1.创建表
create table test1( test1id number, name varchar2(50) )
2.创建序列
-- 创建序列
create sequence sq_items
-- 自增步长
increment by 1
-- 始值
start with 49
-- 没有最大值
nomaxvalue
-- 不循环
nocycle;
create sequence sq_items2
-- 自增步长
increment by 1
-- 始值
start with 49
-- 没有最大值
nomaxvalue
-- 不循环
nocycle;
3.创建触发器
--创建触发器,将序列与表的字段关联起来,并实现自增
create trigger itmes_trig1
before insert on test1
referencing old as old new as new for each row
declare
begin
select sq_items.nextval into :new.test1id from dual;
end itmes_trig1;
4.执行添加操作
insert into test1 values(0,'小明');
5.结果
在执行触发器中遇到了一个错误:
TRIGGER HOUSETRADING1030.ITMES_TRIG1 编译错误
错误:PLS-00103: 出现符号 "?"在需要下列之一时:
( begin case declare exit for
goto if loop mod null pragma raise return select update while
with
<< continue close current delete fetch lock
insert open rollback savepoint set sql execute commit forall
merge pipe purge
符号 “?” 被忽略。
行:6
文本:?select sq_items.nextval into :new.test1id from dual;
解决方法:
前面可能是全角的空格
清除空格后的代码
--创建触发器,将序列与表的字段关联起来,并实现自增
create trigger itmes_trig1
before insert on test1
referencing old as old new as new for each row
declare
begin select sq_items.nextval into :new.test1id from dual;end itmes_trig1;