2017-09-15 2 views
1

Je suis coincé dans ce scénario où j'ai besoin de mettre à jour les crédits de temps supplémentaire de l'employé. Les crédits pour heures supplémentaires sous OvertimeCredits seront mis à jour une fois qu'une demande de compensation sera approuvée.Procédure stockée, mise à jour consommée et date consommée logique

tableau 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 tableau

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

dans une requête en offset, il y a une colonne pour NoOfHours. Cette NoOfHours sera déduite du tableau OvertimeCredits. Notez que chaque employé a beaucoup d'entrées dans OvertimeCredits. Total OvertimeCredits pour un employé peut obtenir en utilisant la somme de la table OvertimeCredits où ID est égal à l'ID de l'employé.

Non Nécessité de validation si NoOfHours est supérieur à la somme de l'employé OvertimeCredits. seulement la logique de mise à jour.

S'il vous plaît voir ce violon:
http://dbfiddle.uk/?rdbms=sqlserver_2016&fiddle=426411d4ace6e374ddd3916a05a8f03a

Répondre

0

Vous pouvez gérer ce processus en créant un déclencheur de mise à jour sur la table CTORequest pour la colonne NoOfHours. Dans le corps de ce déclencheur, codez votre logique pour les actions nécessaires sur la table OverTimeCredits. Vous pouvez trouver beaucoup d'exemple de code dans cette documentation dans SQL Server.