2017-09-15 2 views
1

Ich bin in diesem Szenario stecken, in dem ich die Überstunden-Credits des Mitarbeiters aktualisieren müssen. Überstunden-Gutschriften unter OvertimeCredits Tabelle wird aktualisiert, sobald eine Anfrage für Offset genehmigt wird.Gespeicherte Prozedur, Update verbraucht und Datum verbraucht Logik

CTORequest Tabelle

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 Tabelle

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

in einer Anforderung für den Offset-, gibt es eine Spalte für NoOfHours. Diese NoOfHours wird von der Tabelle OvertimeCredits abgezogen. Beachten Sie, dass jeder Mitarbeiter viele Einträge in OvertimeCredits hat. Total OvertimeCredits für einen Mitarbeiter können mithilfe der Summe aus der OvertimeCredits-Tabelle abgerufen werden, wobei id der Mitarbeiter-ID entspricht.

Keine Notwendigkeit für Validierung, wenn NoOfHours größer ist als die Summe der Mitarbeiter OvertimeCredits. nur die Update-Logik.

Bitte sehen Sie diese Geige:
http://dbfiddle.uk/?rdbms=sqlserver_2016&fiddle=426411d4ace6e374ddd3916a05a8f03a

Antwort

0

Sie diesen Prozess durch die Schaffung eines Update-Trigger auf dem Tisch CTORequest verarbeiten kann für die NoOfHours Spalte. Im Code dieses Triggers codieren Sie Ihre Logik für die notwendigen Aktionen in der Tabelle OverTimeCredits. In der SQL SERVER-Dokumentation finden Sie eine Menge Beispielcode.