2017-09-15 56 views
1

我被困在這種情況下,我需要更新員工的加班積分。在批准Offset請求後,加班費將根據OvertimeCredits表更新。存儲過程,更新消耗和日期消耗邏輯

CTORequest表

CREATE TABLE CTORequest 
(
    CTORequestID INT 
    , EmployeeID INT 
    , ApproverID INT 
    , CTOStatusID INT 
    , DateCreated DATETIME 
    , CTOStartDatetime DATETIME 
    , CTOEndDatetime DATETIME 
    , NoOfHours REAL 
    , ReportBackToWork DATETIME 
    , Reason VARCHAR(250) 
    , Remarks VARCHAR(MAX) 
    , DateProcessed DATETIME 
) 

OvertimeCredits表

CREATE TABLE OvertimeCredits 
(
    OvertimeCreditsID INT 
    , EmployeeID INT 
    , OvertimeID INT 
    , OvertimeCredits FLOAT 
    , DateExpired DATETIME 
    , IsExpired BIT 
    , Consumed FLOAT 
    , DateConsumed DATETIME 
) 

在用於偏移的請求時,存在用於NoOfHours一列。這個NoOfHours將被扣除到OvertimeCredits表。請注意,每位員工在OvertimeCredits中都有許多條目。員工的Total OvertimeCredits可以通過使用OvertimeCredits表中的id來獲得,其中id等於員工ID。

如果NoOfHours大於員工OvertimeCredits的總和,則無需驗證。只有更新邏輯。

請參閱此琴:
http://dbfiddle.uk/?rdbms=sqlserver_2016&fiddle=426411d4ace6e374ddd3916a05a8f03a

回答

0

您可以通過爲NoOfHours列上創建的CTORequest表 的更新觸發,處理這個過程。在該觸發器的主體中,爲表OverTimeCredits上的必要操作編寫邏輯代碼。你可以在SQL SERVER文檔中找到很多示例代碼。