我有一张桌子,一个人每天可以记录几个小时:
|__person__|__day__|__hours__|
| 1 | 1 | 4 |
|___2______|__1____|___2_____|
...
我想创建一个触发器,该触发器不允许特定日期的单个人的小时总和大于特定值,例如24 。
可以在多天同时插入多行,然后触发器应检查每个人的每一天仍然有有效的小时数。
我曾尝试在此处阅读文档和类似问题,但未能解决此问题,并且对SQL Server的经验很少。
任何帮助,将不胜感激!
为此,您将需要一个用户定义的函数,并使用该用户定义的函数创建一个约束,例如...
CREATE FUNCTION dbo.get_TotalHoursRemaining (
@PersonID INT
, @Day INT
)
RETURNS INT
AS
BEGIN
Declare @Hours INT
SELECT @Hours = ISNULL(SUM([HOURS]), 0)
FROM Test_Table
WHERE Person = @PersonID
AND [DAY] = @Day
GROUP BY Person , [DAY]
SET @Hours = 24 - @Hours;
RETURN @Hours;
END
ALTER TABLE Test_Table
ADD CONSTRAINT chk_hours_remaining
CHECK (((dbo.get_TotalHoursRemaining(Person , [Day])) >= 0))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句