我陷入了这种情况,我需要更新员工的加班积分。一旦批准了抵消请求,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中都有许多条目。员工的总OvertimeCredits可以通过使用来自OvertimeCredits表的ID来获得,其中id等于员工ID。
如果NoOfHours大于员工OvertimeCredits的总和,则无需验证。只有更新逻辑。
请看这个小提琴:
http://dbfiddle.uk/?rdbms=sqlserver_2016&fiddle=426411d4ace6e374ddd3916a05a8f03a
答案 0 :(得分:0)
您可以通过在CTORequest表上创建更新触发器来处理此过程 对于NoOfHours列。在该触发器的主体中,为表OverTimeCredits上的必要操作编写逻辑代码。您可以在SQL SERVER文档中找到大量示例代码。