日期:2014-05-17  浏览次数:20404 次

定义的一个行级触发器布置怎的;老师出现日下错误,请各位高手帮忙?再次谢谢!
这是题意:定义一个AFTER行级触发器,当Teacher1表的工资(Sal)发生变化后就自动在工资变化表Sal_log中增加一条相应的记录。

出现的错误:消息 137,级别 15,状态 1,过程 Insert_Or_Update_sal1,第 9 行
必须声明标量变量 "@Sa10"。
消息 137,级别 15,状态 2,过程 Insert_Or_Update_sal1,第 10 行
必须声明标量变量 "@Sa1"。

我写的代码:CREATE TRIGGER Insert_Or_Update_sal1
  ON Teacher1
 FOR insert,update  
 AS
 BEGIN 
      declare  @Sal numeric(7,2),@Job CHAR(10),@Tno numeric(4),@Sal0 numeric(7,2),@Job0 CHAR(10),@Tno0 numeric(4)
     --inserted是insert或update触发表临时表,参考下面帮助。
      select @Tno=Tno,@Job=Job,@Sal=Sal from Inserted 
      select @Tno0=Tno,@Job0=Job,@Sa10=Sal from Deleted 
      if @Sal<>@Sa1
         insert into Sal_log values('"+@Sal+"','"+@Job+"','"+@Tno+"')
END 
------最佳解决方案--------------------
你一个是1:@Sa1,一个是L的小写。看到了没?
------其他解决方案--------------------
@Sa1  @Sa10  数字1 和字母L 别搞错了 0 和字母o 敲错了
------其他解决方案--------------------
出现的错误:消息 137,级别 15,状态 1,过程 Insert_Or_Update_sal1,第 9 行
必须声明标量变量 "@Sa10"。消息 137,级别 15,状态 2,过程 Insert_Or_Update_sal1,第 10 行
必须声明标量变量 "@Sa1"。

我写的代码:CREATE TRIGGER Insert_Or_Update_sal1
  ON Teacher1
 FOR insert,update  
 AS
 BEGIN 
      declare  @Sal numeric(7,2),@Job CHAR(10),@Tno numeric(4),@Sal0 numeric(7,2),@Job0 CHAR(10),@Tno0 numeric(4)
     --inserted是insert或update触发表临时表,参考下面帮助。
      select @Tno=Tno,@Job=Job,@Sal=Sal from Inserted 
      select @Tno0=Tno,@Job0=Job,@Sa10=Sal from Deleted 
      if @Sal<>@Sa1
         insert into Sal_log values('"+@Sal+"','"+@Job+"','"+@Tno+"')
END  
------其他解决方案--------------------
俺知道啦,谢谢哈,下次俺一定小心!谢谢各位!嘿嘿........