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