实现插入varchar2类型数据的时候,自动插入该数据长度的触发器。
create or replace trigger tri_menu
  before insert on t_menu_data  
  for each row
declare
  -- local variables here
begin
     if(T_MENU_DATA.data is not null)
      update T_MENU_data set MENU_SIEZ = MENU_DATA.Length()/2;
     end if;
end tri_menu_info;不知道哪儿有问题?

解决方案 »

  1.   

    把MENU_DATA.Length()/2; 
    改成Length(MENU_DATA)/2; 
      

  2.   

    TRIGGER PHSOTA.TRI_MENU 编译错误错误:PLS-00103: 出现符号 "UPDATE"在需要下列之一时:
            * & = - + < / > at in is
              mod not rem then <an exponent (**)> <> or != or ~= >= <= <>
              and or like between overlaps || year DAY_
           符号 "then" 被替换为 "UPDATE" 后继续。
    行:8
    文本:update T_MENU_data set DATA_SIZE =length(data)/2;
      

  3.   

    去掉if后可以编译过,但是插入的时候还是提示不能插入NULL。触发器怎么没有工作?
    是应该“before insert”还是“after insert”
      

  4.   

    应该是update T_MENU_data set MENU_SIEZ = length(:new.data)/2;吧
      

  5.   

    对了,在update 前应该加关键字then