我所写的触发器程序如下: 
 create trigger Insert_stud
  after insert on student1
  for each row
  as begin
      insert into stud_bk values(
             new.sname,new.ssex,new.sage,new.sdept);
end;
go
create trigger update_stud
  After update on student1
  for each row
  as begin
     if(new.std<>old.std) then insert into stud_bk values(
            new,sname,new.ssex,new.sage,new.sdept);
end if;
end;
提示的错误如下:   
服务器: 消息 170,级别 15,状态 1,过程 Insert_stud,行 2
第 2 行: 'after' 附近有语法错误。
服务器: 消息 128,级别 15,状态 1,过程 Insert_stud,行 6
在此上下文中不允许使用 'sname'。此处只允许使用常量、表达式或变量。不允许使用列名。
服务器: 消息 170,级别 15,状态 1,过程 update_stud,行 2
第 2 行: 'After' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,过程 update_stud,行 5
在关键字 'then' 附近有语法错误。
服务器: 消息 128,级别 15,状态 1,过程 update_stud,行 6
在此上下文中不允许使用 'new'。此处只允许使用常量、表达式或变量。不允许使用列名。
请高手给解答一下.先谢谢了.

解决方案 »

  1.   


    create trigger Insert_stud 
    after insert on student1 
    for each row 
    begin 
      insert into stud_bk   
      values(:new.sname,:new.ssex,:new.sage,:new.sdept); 
    end; 
      

  2.   


    create trigger update_stud 
    After update of 某列 on student1 
    for each row 
    begin 
      if(:new.std <> :old.std) then   
      insert into stud_bk   
      values(:new.sname,:new.ssex,:new.sage,:new.sdept); 
      end if; 
    end; 
      

  3.   

    sql server 2000 
    运行了好象以前的错误还是存在哦
      

  4.   

    SQL-server 2000 里触发器的定义不是这样的 
    create trigger 触发器名字
    on 表名(在哪个表上建)
    for delete
    as
    delete from 属性名
    where 条件
      

  5.   

    create   trigger   triggername
    on   tablename
    after delete 
    as 
    begin
       ..
    end
      

  6.   

    on 应该在for 前面
    create   trigger   Insert_stud 
           on   student1 
        for  after   insert
        as   begin 
                insert   into   stud_bk   values( 
                              new.sname,new.ssex,new.sage,new.sdept); 
    end; 
      

  7.   

    on   应该在for   前面 SQL codecreate   trigger   Insert_stud 
           on   student1 
          after   insert
        as   begin 
                insert   into   stud_bk   values( 
                              new.sname,new.ssex,new.sage,new.sdept); 
    end; 
      

  8.   

    我上面写的是oracle 的写法,不能在sql server中运行的
      

  9.   

    create trigger Insert_stud on student1 
    after insert 
    as
    begin 
      insert into stud_bk   
      select sname,ssex,sage,sdept from inserted
    end; 
      

  10.   


    create trigger update_stud on student1 
    After update 
    as
    begin 
      if exists(select * from inserted where not exists(select 1 from deleted where inserted.std=deleted.std))
      begin 
      insert into stud_bk   
      select sname,ssex,sage,sdept from inserted
      end 
    end
      

  11.   

    在oracle 中触发器的虚表是 new ,old ,sql 2000 为inserted,deleted
      

  12.   

    Oracle的Trigger么?
    on xx表肯定是在after 、for、instead of前面的
    建议看看帮助文件