CREATE OR REPLACE TRIGGER upmail  
before update or insert   on  TB_INF_EMPCONTACT
for each rowbegin
    declare  @mail1  varchar(32),@mail2  varchar(32),@tel  varchar(32)
    select @mail1=_PrivateMail,@mail2=C_CompanyMail,@tel=C_Mobile   from inserted
    
    update   tb_inf_employee   set  C_PRIVATEEMAIL=@mail1, C_MAIL=@mail2,
           C_RELATIONTEL=@tel  from inserted  where C_EMPLOYEEID=inserted.C_EMPOID
  
  end
求语法错误~~~小弟初学ORACLE,各位大侠给力啊~~

解决方案 »

  1.   

    CREATE OR REPLACE TRIGGER upmail  
    before update or insert on TB_INF_EMPCONTACT
    for each rowbegin
      declare @mail1 varchar(32),@mail2 varchar(32),@tel varchar(32),@empoid varchar(32)
      select @mail1=_PrivateMail,@mail2=C_CompanyMail,@tel=C_Mobile,@empoid = C_EMPOID
      from inserted
       
      update tb_inf_employee 
      set C_PRIVATEEMAIL=@mail1, C_MAIL=@mail2,C_RELATIONTEL=@tel 
      where C_EMPLOYEEID=@empoid
      
      end
      

  2.   

    触发器 'LONGHU.UPMAIL' 无效且未通过重新验证 
      

  3.   

    ORA-04098: 触发器 'LONGHU.UPMAIL' 无效且未通过重新验证 
     请教大侠们这个错误是什么原因?用户的权限OR语法错误?
      

  4.   

    在PLSQL Developer中用管理员进去给你用户分配create session权限就可以了。
      

  5.   

    CREATE OR REPLACE TRIGGER upmail   
    before update or insert on TB_INF_EMPCONTACT
    for each rowbegin
      declare @mail1 varchar(32),@mail2 varchar(32),@tel varchar(32)
      select  c_PrivateMailC_CompanyMailC_Mobile into @mail1 ),@mail2,@tel from dual
        
      update tb_inf_employee set C_PRIVATEEMAIL=@mail1, C_MAIL=@mail2,
      C_RELATIONTEL=@tel from inserted where C_EMPLOYEEID=inserted.C_EMPOID
       
      end
      

  6.   

    在SYS账户下建立 不要用错账户
      

  7.   

    好像不能对SYS拥有的对象创建触发器,
      

  8.   


    [code=SQL]---哥们你那是MSSQL的写法
    CREATE OR REPLACE TRIGGER upmail   
    before update or insert on TB_INF_EMPCONTACT
    for each rowbegin
        update tb_inf_employee set C_PRIVATEEMAIL=:new.mail1, C_MAIL=:new.mail2,
      C_RELATIONTEL=:new.tel where C_EMPLOYEEID=:new.C_EMPOID
       
      end;[/code]