create trigger tr_xfliushui_insert on xfliushui
for insert 
as 
if @@rowcount=0
return
declare @str1 varchar(1000),@str varchar(20)
select @str='xflsh'+convert(char(12),i.riqi,112) from inserted i
set @str1='insert into '+@str+'(cardclass,cardsn,cardid,driverid,yuer,xftime,zhandian,busno,xianlu,riqi,feilv,caiji,ldbh,chuliflag) select i.cardclass,i.cardsn,i.cardid,i.driverid,i.yuer,i.xftime,i.zhandian,i.busno,i.xianlu,i.riqi,i.feilv,i.caiji,i.ldbh,i.chuliflag from inserted i' 
exec(@str1)
if @@error!=0
begin
rollback tran
return
end
return
提示错误:
对象名 'inserted' 无效。

解决方案 »

  1.   

    函数中不能用动态的sql语句。
      

  2.   

    什么意思,EXEC中吗,要是把inserted改为一个表名就可以呢
      

  3.   

    这样来做create trigger tr_xfliushui_insert on xfliushui
    for insert 
    as 
    if @@rowcount=0
    return
    declare @str1 varchar(1000),@str varchar(20)
    select @str='xflsh'+convert(char(12),i.riqi,112) from inserted i
    select * into #i from insertedset @str1='insert into '+@str+'(cardclass,cardsn,cardid,driverid,yuer,xftime,zhandian,busno,xianlu,riqi,feilv,caiji,ldbh,chuliflag) select i.cardclass,i.cardsn,i.cardid,i.driverid,i.yuer,i.xftime,i.zhandian,i.busno,i.xianlu,i.riqi,i.feilv,i.caiji,i.ldbh,i.chuliflag from #i i' 
    exec(@str1)
    if @@error!=0
    begin
    rollback tran
    drop table #i
    return
    end
    drop table #i
    return