SQL Server SE NÃO EXISTE O USO?

Ok, então meu esquema é o seguinte:

Tabela: Timesheet_Hours

Colunas:

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

Esta é uma versão extremamente simplificada da tabela, mas servirá para os fins desta explicação. Suponha que uma pessoa só possa ter um registro de quadro de horários.

O que estou tentando fazer é adicionar registros a outra tabela, chamada WorkLog. Cada registro aqui tem um tempo associado a ele. Quando essa tabela é atualizada, quero atualizar o Timesheet_Hours também.

Antes de atualizar o Timesheet_Hours, quero verificar primeiro se os Timesheets relevantes já foram publicados e, em primeiro lugar, quero verificar se existe um registro para atualizar.

A primeira parte da instrução if, que verifica se as planilhas de horas ainda não foram postadas, funciona bem. O problema é a segunda parte. É checkint para ver que o registro que vai atualizar já existe. A questão é que sempre gera um erro.

NB: O código abaixo é extraído de um procedimento armazenado executado pelos gatilhos update, insert e delete na tabela WorkLog. @PersonID é um dos parâmetros para essa tabela. O procedimento armazenado funciona bem se eu comentar a segunda parte desta declaração.

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