程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> sql server-刪除觸發器裡加一個更新操作,出現錯誤

sql server-刪除觸發器裡加一個更新操作,出現錯誤

編輯:編程綜合問答
刪除觸發器裡加一個更新操作,出現錯誤

表說明:會員表 HX_USER 主鍵 會員編號 U_ID U_NAME(會員名)
   報名表 hx_huodonguser 包含字段 U_ID (會員ID) HD_ID (活動ID)
   活動表 HX_HUODONG  包含字段 HD_ID (活動ID)HD_NAME(活動名)HD_NUMPOST(報名人數)
目的:如上表,我想在刪除一個會員的時候,同時刪除這個會員在報名表中的記錄,並將活動表中這個會員所報名的活動,它所對應的報名人數減去1.
代碼:
  create trigger [dbo].[tri_user_delete]
  on [dbo].[HX_USER]
  for delete
  as
  begin
    delete hx_huodonguser
    from hx_huodonguser h,deleted d
    where h.U_ID = d.U_ID

    UPDATE HX_HUODONG set HD_NUMPOST = HD_NUMPOST-1 where HD_ID IN (select HD_ID FROM hx_huodonguser where U_ID = d.U_ID)
  end
報錯: 無法綁定由多個部分組成的標識符 "d.U_ID"
問題:請問怎麼寫,讓編譯器知道,我要更新的報名記錄?

最佳回答:


ALTER trigger [dbo].[tri_hx_user_delete]
on [dbo].[HX_USER]

for delete
as
begin
--活動

declare @U_ID int
select @U_ID=U_ID  from  deleted
UPDATE HX_HUODONG set HD_NUMPOST = HD_NUMPOST-1 where HD_ID IN (select HD_ID FROM hx_huodonguser where U_ID = @U_ID) 

delete hx_huodonguser
from hx_huodonguser h,deleted d
where h.U_ID = d.U_ID

 ---------------
 已解決。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved