INSERT INTO ExpenseRecrod(RecordList,ExpTime,ExpType,Expense)
SELECT RecordList,GETDATE(),CASE WHEN @difference<0 THEN '消费 ' ELSE '圈存 ' END ,@difference
FROM inserted
CASE WHEN @differ<0 THEN '消费 ' ELSE '圈存 ' END
是这句出错了吗?
怎么通过判断difference的大小去设置ExpType的值呢?
...全文
31848打赏收藏
SQL中 sql 在将 nvarchar 值 转换成数据类型 int 时失败
INSERT INTO ExpenseRecrod(RecordList,ExpTime,ExpType,Expense) SELECT RecordList,GETDATE(),CASE WHEN @difference<0 THEN '消费 ' ELSE '圈存 ' END ,@difference FROM inserted CASE WHEN @differ<0 THEN '消费 ' ELSE '圈存 ' END 是这句出错了吗? 怎么通过判断difference的大小去设置ExpTy
create trigger Exp_Update
on CCard
for update
as
if update(CBalance)
begin
declare @b_before nvarchar(50) --修改之前的
declare @balance_b float
declare @b_after nvarchar(50) --修改之后的
declare @balance_a float
declare @difference nvarchar(50)
declare @differ float
SELECT @b_after= CBalance from inserted --从更新后的副本表(临时表)里面 获得要修改后的状态
SET @balance_a=convert(float,@b_after)
SELECT @b_before=CBalance from deleted --从之前删掉的临时表里面获取原来的值
SET @balance_b=convert(float,@b_before)
if @b_before is not null
begin
set @differ = @balance_a-@balance_b
set @difference =convert(nvarchar(50),@differ)
INSERT INTO ExpenseRecrod(RecordList,ExpTime,ExpType,Expense)
SELECT RecordList,GETDATE(),CASE WHEN @difference<0 THEN '消费 ' ELSE '圈存 ' END ,@difference
FROM inserted
end
end
INSERT INTO ExpenseRecrod(RecordList,ExpTime,ExpType,Expense)
SELECT RecordList,GETDATE(),CASE WHEN isnumeric(@difference)=1 and @difference<0 THEN '消费 ' ELSE '圈存 ' END ,@difference
FROM inserted