SQL Server ЕСЛИ НЕ СУЩЕСТВУЕТ Использование?

Хорошо, моя схема такова:

Таблица: Расписание_Часы

Колонки:

Timesheet_Id (PK, int) Staff_Id (int) BookedHours (int) Posted_Flag (boolean)

Это чрезвычайно упрощенная версия таблицы, но она будет использоваться для целей этого объяснения. Предположим, что у человека может быть только одна запись расписания.

Я пытаюсь добавить записи в другую таблицу, которая называется WorkLog. С каждой записью здесь связано время. Когда эта таблица будет обновлена, я хочу также обновить Timesheet_Hours.

Прежде чем обновлять Timesheet_Hours, я хочу сначала проверить, что соответствующие табели рабочего времени еще не были опубликованы, а затем я хочу проверить, существует ли на самом деле запись для обновления в первую очередь.

Первая часть оператора if, которая проверяет, что расписания еще не были опубликованы, работает нормально. Проблема во второй части. Это проверка того, что запись, которую он собирается обновить, уже существует. Проблема в том, что всегда возникает ошибка.

Примечание: приведенный ниже код извлекается из хранимой процедуры, запускаемой триггерами обновления, вставки и удаления в таблице WorkLog. @PersonID является одним из параметров этой таблицы. Хранимая процедура работает нормально, если я закомментирую вторую часть этого утверждения.

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

Ответы на вопрос(1)

Ваш ответ на вопрос