Oracle是使用序列来实现自增长的(sequence),你首先得创建一个序列, CREATE SEQUENCE 序列名 [INCREMENT BY n] [START WITH n] [{MAXVALUE/ MINVALUE n|NOMAXVALUE}] [{CYCLE|NOCYCLE}] [{CACHE n|NOCACHE}]; 例如: create sequence seq_student increment by 1 start with 1; 在insert的时候,使用序列值(select seq_student.nextval from dual),这样的方式来实现自增长! nextval和currval两个伪列 希望能帮到你!
不用SQL 语句直接 添加序列 ,就像将ID设置为主键一样 怎么做呢?
TRIGGER 不能滥用, 但是适当的用点还是很方便的. 在INSERT 的时候用TRIGGER来取得这个自增ID就可以了. CREATE OR REPLACE TRIGGER TR_SEQ_TABLENAME BEFORE INSERT ON TABLENAME FOR EACH ROW BEGIN SELECT SEQ_TABLENAME.NEXTVAL INTO :NEW.ID FROM DUAL; END;
像楼主所说的不是在存储过程中直接插入序列,可以用序列结合触发器完成,不过触发器一般慎用(以下是我的一个实例) --创建序列 create sequence EPLINFOS_seq start with 1 increment by 1; --触发器 drop trigger EPLINFOS_trigger create trigger EPLINFOS_trigger before insert on EPLINFOS for each row begin select EPLINFOS_seq.nextval into :new.IID from dual; end ;
CREATE SEQUENCE 序列名
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}]
[{CYCLE|NOCYCLE}]
[{CACHE n|NOCACHE}];
例如:
create sequence seq_student
increment by 1
start with 1;
在insert的时候,使用序列值(select seq_student.nextval from dual),这样的方式来实现自增长!
nextval和currval两个伪列
希望能帮到你!
不用SQL 语句直接 添加序列 ,就像将ID设置为主键一样 怎么做呢?
TRIGGER 不能滥用, 但是适当的用点还是很方便的. 在INSERT 的时候用TRIGGER来取得这个自增ID就可以了.
CREATE OR REPLACE TRIGGER TR_SEQ_TABLENAME
BEFORE INSERT ON TABLENAME
FOR EACH ROW
BEGIN
SELECT SEQ_TABLENAME.NEXTVAL INTO :NEW.ID FROM DUAL;
END;
两个略微区别于空的时候。
--创建序列
create sequence EPLINFOS_seq start with 1 increment by 1;
--触发器
drop trigger EPLINFOS_trigger
create trigger EPLINFOS_trigger
before insert on EPLINFOS
for each row
begin
select EPLINFOS_seq.nextval into :new.IID from dual;
end ;