有两个表,Table1是放公告的,Table2是放附件的。
上传的时候先插如资料到Table1中,然后得到刚刚插入Table1中资料的NoticeID,根据这个NoticeID就得到了对应的DOCID(两者是一样的)再往Table2中插入附件资料
关键就在:在向Table1中插入资料后,返回了代表成功的rt(成功rt=1),这个NoticeID怎么得?(NoticeID是自增的),
我想用select Top1不怎么好,因为用户一多,就有可能同时操作。TOP1就不准,希望高手提点一下。
上传的时候先插如资料到Table1中,然后得到刚刚插入Table1中资料的NoticeID,根据这个NoticeID就得到了对应的DOCID(两者是一样的)再往Table2中插入附件资料
关键就在:在向Table1中插入资料后,返回了代表成功的rt(成功rt=1),这个NoticeID怎么得?(NoticeID是自增的),
我想用select Top1不怎么好,因为用户一多,就有可能同时操作。TOP1就不准,希望高手提点一下。
CREATE SEQUENCE emp_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;
一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL
CURRVAL=返回 sequence的当前值
NEXTVAL=增加sequence的值,然后返回 sequence 值
比如:
emp_sequence.CURRVAL
emp_sequence.NEXTVAL
我只有个想法,具体不知道。
等待学习!
insert into ADM_BLT
(NOTICEID, CLASS, SUBJECT, CONTENT, STATUS, CREATEBY, CREATEDATE)
VALUES
('21', '公告', '维护3', '维护3', '1', 'takako', sysdate) returning NOTICEID into ln_noticeid;ln_noticeid就是你刚插入的值。
create or replace procedure f(rt out number) is
begin
insert into ADM_BLT
(NOTICEID, CLASS, SUBJECT, CONTENT, STATUS, CREATEBY, CREATEDATE)
VALUES
( '21','公告','维护3','维护3','1','takako', sysdate);
rt:=1;
dbms_output.put_line(rt);
exception
when others then
rt := 0;
dbms_output.put_line(rt);
end f;
然后再调用
如果还有疑问我们需要更多的信息。
create sequence t_seq;
create trigger t_trigger before insert on t for each row
begin
select t_seq.nextval into :new.pk from dual;
end;