alter trigger grigger_change_delete on [Game]
/*for update*/
after update
as
if not exists(select 1 from deleted d join inserted i on d.[ID]=i.[ID] and d.stateID=1 and i.stateID=2)
/*如果不是由1变成2的,就终止执行*/
return
else
begin
if((select [stateID] from inserted)=2)
begin
/*当stateid值变成2时,将所有与之公司id对应的赔率表中的信息删除*/declare @gameid intset @gameid=(select [ID] from deleted d join inserted i on d.[ID]=i.[ID] and d.stateID=1 and i.stateID=2)/*问题就出在这里*/
delete [AbPayoutRate] where [HashCode] in (select [abid] from [Game] where [ID]=@gameid)delete [AsePayoutRate] where [HashCode] in (select [aseid] from [Game] where [ID]=@gameid)delete [AstPayoutRate] where [HashCode] in (select [astid] from [Game] where [ID]=@gameid)delete [BinPayoutRate] where [HashCode] in (select [binID] from [Game] where [ID]=@gameid)delete [DaPayoutRate] where [HashCode] in (select [daID] from [Game] where [ID]=@gameid)delete [GaPayoutRate] where [HashCode] in (select [gaID] from [Game] where [ID]=@gameid)delete [HdPayoutRate] where [HashCode] in (select [hdID] from [Game] where [ID]=@gameid)delete [JpPayoutRate] where [HashCode] in (select [jpID] from [Game] where [ID]=@gameid)delete [SbPayoutRate] where [HashCode] in (select [sbID] from [Game] where [ID]=@gameid)delete [TaPayoutRate] where [HashCode] in (select [taID] from [Game] where [ID]=@gameid)
end
end

解决方案 »

  1.   

    说明关联的表有多个表都有id列select [ID] from deleted d 
    这里的id前要加表别名
    select d.[ID] from deleted d 

    select i.[ID] from deleted d 
      

  2.   

    set @gameid=(select i.[ID] from deleted d join inserted i on d.[ID]=i.[ID] and d.stateID=1 and i.stateID=2
      

  3.   

    select [ID] from deleted d join inserted i on d.[ID]=i.[ID] and d.stateID=1 and i.stateID=2
    -->>
    select d.[ID] from deleted d join inserted i on d.[ID]=i.[ID] and d.stateID=1 and i.stateID=2

    select i.[ID] from deleted d join inserted i on d.[ID]=i.[ID] and d.stateID=1 and i.stateID=2
      

  4.   

    declare @gameid intset @gameid=(select [ID] from deleted d join inserted i on d.[ID]=i.[ID] and d.stateID=1 and i.stateID=2)/*问题就出在这里*/
    这个里面的SELECT [ID]不明确,要指定是哪一个表的