SQL Server SI NO EXISTE ¿Uso?
Ok, entonces mi esquema es este:
Tabla: Horarios
Columnas:
Timesheet_Id (PK, int)Staff_Id (int)Reservado Horas (int)Posted_Flag (booleano)Esta es una versión extremadamente simplificada de la tabla, pero servirá para los propósitos de esta explicación. Supongamos que una persona solo puede tener un registro de hoja de tiempo.
Lo que estoy tratando de hacer es agregar registros a otra tabla, llamada WorkLog. Cada registro aquí tiene un tiempo asociado con él. Cuando esa tabla se actualice, también quiero actualizar Timesheet_Hours.
Antes de actualizar Timesheet_Hours, quiero comprobar primero que las partes de tiempo relevantes aún no se han publicado, y luego quiero comprobar si hay un registro para actualizar en primer lugar.
La primera parte de la declaración if, que verifica que las hojas de tiempo no se hayan publicado, funciona bien. El problema es la segunda parte. Es checkint para ver que el registro que va a actualizar ya existe. El problema es que siempre genera un error.
NB: el código a continuación se extrae de un procedimiento almacenado ejecutado por los activadores de actualización, inserción y eliminación en la tabla de WorkLog. @PersonID es uno de los parámetros de esa tabla. El procedimiento almacenado funciona bien si comento la segunda parte de esta declaración.
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