create or replace trigger tr_taw_sheetvalue_value_id
  before insert on taw_sheetvalue
  for each row
declare
  -- local variables here
begin
  if :new.value_id is null then
      select q_taw_sheetvalue.nextval into :new.value_id from dual;
  end if;
end tr_taw_sheetvalue_value_id;
------------------q_taw_sheetvalue
为什么要加这个q?有何用?

解决方案 »

  1.   

    q_taw_sheetvalue是序列, q_taw_sheetvalue.nextval 是指序列的下一个值
      

  2.   

    这个q_taw_sheetvalue序列不用定义吗,就直接出现在select里面了?还是在其他地方定义了?以前没接触过trigger :)
      

  3.   

    --创建序列
    create sequence taw_sheetvalue_seq;create or replace trigger tr_taw_sheetvalue_value_id
      before insert on taw_sheetvalue
      for each row
    declare
      -- local variables here
    begin
      if :new.value_id is null then
          select taw_sheetvalue_seq.nextval into :new.value_id from dual;--在触发器中使用序列
      end if;
    end tr_taw_sheetvalue_value_id;
      

  4.   

    --创建序列
    create sequence taw_sheetvalue_seq;create or replace trigger tr_taw_sheetvalue_value_id
      before insert on taw_sheetvalue
      for each row
    declare
      -- local variables here
    begin
      if :new.value_id is null then--你这是插入前进行触发,不知道你是如何处理这个value_id的,如果你的意思是让触发器填写这个值,那这句可以不需要的.
          select taw_sheetvalue_seq.nextval into :new.value_id from dual;--在触发器中使用序列
      end if;
    end tr_taw_sheetvalue_value_id;