好的,我的模式是:
表:时间表_小时
柱:
- 时间表Id(主键,整数)
- 职员Id(内部)
- 预订时间(国际)
- Posted_标志(布尔值)
这是该表的一个极其简化的版本,但它将用于本解释的目的.假设一个人只能有一个时间表记录.
我要做的是将记录添加到另一个名为WorkLog的表中.这里的每条记录都有一个相关的时间.当表格更新时,我也想更新时间表.
在更新时间表之前,我想先判断相关时间表是否已经发布,然后我想首先判断是否有需要更新的记录.
if语句的第一部分判断时间表是否已经发布,可以正常工作.问题是第二部分.它正在判断要更新的记录是否已经存在.问题是它总是会引发错误.
注意:下面的代码是从WorkLog表上的update、insert和delete触发器运行的存储过程中提取的@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