你能帮我解释为什么在这个触发器中不想阅读Inserted.StartSession
?所有的名字都是正确的,但他只是没有看到这个插入的字段...
由于
ALTER TRIGGER massage.Eighthourswork
ON massage.tSchedule FOR INSERT
AS
BEGIN
declare @DayPart datetime
set @DayPart = INSERTED.StartSession
--SET NOCOUNT ON
IF (SELECT sum (cast(datepart(hour, SessionHours) as int))
FROM massage.tSchedule
WHERE Datepart(day,massage.tSchedule.StartSession) = Datepart(day, @DayPart)) = 8
RETURN print 'Cant work more than 8 hours'
End
答案 0 :(得分:0)
INSERTED是一个(虚拟)表。你不能这样做:
set @DayPart = INSERTED.StartSession
你可以这样做:
set @DayPart = SELECT TOP 1 StartSession FROM INSERTED
但更好的方法是根本不使用变量,并加入IF(SELECT ...)语句中的inserted表。否则如果一次插入多行会发生什么?