HR系統觸發器
寫的觸發器后, 但是還是顯示0,電費,這觸發有什么問題嗎?

ALTER Trigger [dbo].[Month000001A]
on [dbo].[EmployeeMonthPay]
for insert,update
as
if update(Paycount)
begin
set nocount on
DECLARE @ItemNo CHAR(8)--宿舍號
DECLARE @MoneyB CHAR(8)--宿舍金額
DECLARE @Days INT --入職天數
DECLARE @EmpNo CHAR(20)--工號
DECLARE @YYMM CHAR(6)--日期
DECLARE @YYMMB CHAR(6)--日期
declare @UsedNum INT --使用數量
declare @DormID CHAR(8) --宿舍編號
declare @Pay25 INT --電費
declare @YYMMA CHAR(6) --日期
SELECT @EmpNo=EmpNo,@YYMM=YYMM,@Pay25=Pay25 FROM INSERTED
BEGIN
SELECT @ItemNo=ItemNo,@Days=Days,@EmpNo=EmpNo,@YYMMA=YYMM FROM WEPEmployeeMonth
SELECT @MoneyB=MoneyB, @YYMMB=YYMM FROM WEPMonthData
SELECT @UsedNum=UsedNum, @ItemNo=ItemNo FROM Dorm
begin
IF @YYMM=@YYMMA
UPDATE EmployeeMonthPay SET Pay25=(((a.MoneyB-100)/(select day(dateadd(month,1,H.YYMM+ '01 ')-1)))/m.UsedNum*h.Days)
from EmployeeMonthPay
JOIN WEPMonthData a on @ItemNo=a.ItemNo and @YYMM=a.YYMM
JOIN WEPEmployeeMonth H on h.ItemNo=a.ItemNo and @YYMM=H.YYMM
JOIN Dorm M on A.ItemNo=M.ItemNo
where @YYMM=H.YYMM AND @MoneyB>100 and @EmpNo=H.EmpNo
END
end
SET NOCOUNT OFF
END
uj5u.com熱心網友回復:
WEPEmployeeMonth,WEPMonthData ,Dorm 這3個表都只有1條資料嗎?否則怎么保證@YYMM=@YYMMA這個條件滿足呢,以及UPDATE陳述句中的表連接ON條件和WHERE條件滿足。
uj5u.com熱心網友回復:
是的, @YYMM 比如202006 ,Dorm 這個表主要是獲取房間里的總人數 UsedNum ,對應的宿舍號 ItemNo
WEPMonthData MoneyB 宿舍總電費,有對應的宿舍號 ItemNo,
WEPEmployeeMonth Days住宿的天數,員工工號 EmpNo ,有對應的宿舍號 ItemNo,
uj5u.com熱心網友回復:
看你定義的好幾個都是char,char如果不夠位數會自動補零,你自己先不用觸發器,改下陳述句手動執行下,更新陳述句有沒有執行成功uj5u.com熱心網友回復:
這樣查詢是,沒問題
select (((MoneyB-100)/(select day(dateadd(month,1,H.YYMM+ '01 ')-1)))/M.UsedNum*H.Days) from v_WEPMonthData A
LEFT JOIN Dorm M ON A.ItemNo=M.ItemNo
LEFT JOIN WEPEmployeeMonth H ON A.ItemNo=H.ItemNo
where H.YYMM='202006'AND MONEYB>=100
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/14544.html
標籤:疑難問題
