验证出错 这是一个触发器: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 行
将截断字符串或二进制数据。
语句已终止。
------最佳解决方案-------------------- 最好这样传:UPDATE Teacher1 SET Sal=1990.0 WHERE Tno='T002'; ------其他解决方案-------------------- Sal这个的数据类型太短了 ------其他解决方案-------------------- 这个表的结果贴出来看看Teacher1 ------其他解决方案-------------------- 你定义的时候是这样, declare @Sal numeric(7,2),但是用的时候是字符型,好像不行哦 ------其他解决方案-------------------- 那你不要传varchar,穿1990.0试试 ------其他解决方案-------------------- UPDATE Teacher1 SET Sal=1990 WHERE Tno='T003';