首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

证验出错

2013-01-11 
验证出错这是一个触发器:CREATE TRIGGER Insert2_Or_Update_salON Teacher1 FORupdateAS BEGINdeclare@Sal

验证出错
这是一个触发器:CREATE TRIGGER Insert2_Or_Update_sal 
  ON Teacher1
 FOR  update  
 AS
 BEGIN 
      declare  @Sal numeric(7,2),@Job varCHAR(10),@Tno varCHAR(6),@Sal0 numeric(7,2),@Job0 varCHAR(10),@Tno0 varCHAR(6)
      declare @msg char(50)
     --inserted是insert或update触发表临时表,参考下面帮助。
      select @Tno=Tno,@Job=Job,@Sal=Sal from Inserted 
      select @Tno0=Tno,@Job0=Job,@Sal0=Sal from Deleted 
      if abs(@Sal-@Sal0)>2000
       
      ROLLBACK TRANSACTION 
         set @msg='插入后的薪资比插入前的薪资变动过大,故将为您取消此插入操作!' 
         print @msg    
          
END 

验证:
UPDATE Teacher1  SET Sal=1990 WHERE Tno='T002';
但是老师出现这样的错误:消息 8152,级别 16,状态 14,过程 Insert_Or_Update_sal1,第 11 行
将截断字符串或二进制数据。
语句已终止。


[解决办法]
Sal这个的数据类型太短了
[解决办法]
最好这样传:UPDATE Teacher1  SET Sal=1990.0 WHERE Tno='T002';

热点排行