create sequence seq_qx start with 10000 maxvalue 19999 cycle;
create sequence seq_qt start with 10000 maxvalue 19999 cycle;
create sequence seq_lx start with 10000 maxvalue 19999 cycle;
create or replace trigger trigger_on_id before insert on task for each row
begin
if :new.taskattribute='1' then
select to_char(sysdate,'yyyy')||'QX'||substr(seq_qx.nextval,2,4) :new.TASKID from dual;
elsif :new.TaskAttribute='2' then
select to_char(sysdate,'yyyy')||'LX'||substr(seq_lx.nextval,2,4) :new.TASKID from dual;
else
select to_char(sysdate,'yyyy')||'QT'||substr(seq_qt.nextval,2,4) :new.TASKID from dual;
end;
create sequence seq_qt start with 10000 maxvalue 19999 cycle;
create sequence seq_lx start with 10000 maxvalue 19999 cycle;
create or replace trigger trigger_on_id before insert on task for each row
begin
if :new.taskattribute='1' then
select to_char(sysdate,'yyyy')||'QX'||substr(seq_qx.nextval,2,4) :new.TASKID from dual;
elsif :new.TaskAttribute='2' then
select to_char(sysdate,'yyyy')||'LX'||substr(seq_lx.nextval,2,4) :new.TASKID from dual;
else
select to_char(sysdate,'yyyy')||'QT'||substr(seq_qt.nextval,2,4) :new.TASKID from dual;
end;
以上这种语句行的通吗?
为什么没有into
应该是
create sequence seq_qx start with 10000 maxvalue 19999 cycle;
create sequence seq_qt start with 10000 maxvalue 19999 cycle;
create sequence seq_lx start with 10000 maxvalue 19999 cycle;
create or replace trigger trigger_on_id before insert on task for each row
begin
if :new.taskattribute='1' then
select to_char(sysdate,'yyyy')||'QX'||substr(seq_qx.nextval,2,4) into :new.TASKID from dual;
elsif :new.TaskAttribute='2' then
select to_char(sysdate,'yyyy')||'LX'||substr(seq_lx.nextval,2,4) into :new.TASKID from dual;
else
select to_char(sysdate,'yyyy')||'QT'||substr(seq_qt.nextval,2,4) into :new.TASKID from dual;
end;