SQL Server JEŚLI NIE ISTNIEJE?

Ok, więc mój schemat jest następujący:

Tabela: Godziny pracy

Kolumny:

Ewidencja czasu pracy (PK, int)Staff_Id (int)BookedHours (int)Posted_Flag (boolean)

Jest to bardzo uproszczona wersja tabeli, ale będzie służyć do celów tego wyjaśnienia. Załóżmy, że osoba może mieć tylko jeden rekord grafiku.

Próbuję dodać rekordy do innej tabeli o nazwie WorkLog. Każdy rekord tutaj ma związany czas. Gdy ta tabela zostanie zaktualizowana, chcę również zaktualizować godziny pracy karty graficznej.

Zanim zaktualizuję karty graficzne, chcę najpierw sprawdzić, czy odpowiednie karty graficzne nie zostały jeszcze opublikowane, a następnie chcę sprawdzić, czy w rzeczywistości istnieje rekord do aktualizacji.

Pierwsza część instrukcji if, która sprawdza, czy karty czasu pracy nie zostały jeszcze opublikowane, działa poprawnie. Problemem jest druga część. Sprawdzanie, czy rekord, który ma zostać zaktualizowany, już istnieje. Problem polega na tym, że zawsze powoduje błąd.

NB: Poniższy kod pochodzi z procedury przechowywanej uruchamianej przez wyzwalacze aktualizacji, wstawiania i usuwania w tabeli WorkLog. @PersonID to jeden z parametrów tej tabeli. Procedura składowana działa poprawnie, jeśli skomentuję drugą część tego oświadczenia.

IF EXISTS
    (
    SELECT 1
    FROM Timesheet_Hours
    WHERE Posted_Flag = 1
    AND Staff_Id = @PersonID
    )

    BEGIN
        RAISERROR('Timesheets have already been posted!', 16, 1)
        ROLLBACK TRAN
    END
ELSE
    IF NOT EXISTS
        (
        SELECT 1
        FROM Timesheet_Hours
        WHERE Staff_Id = @PersonID
        )

        BEGIN
            RAISERROR('Default list has not been loaded!', 16, 1)
            ROLLBACK TRAN
        END

questionAnswers(1)

yourAnswerToTheQuestion