0
如果确定某个团队成员太多,我正在建立团队名单并尝试阻止INSERT
。触发器触发,但条件不评估。这是触发:SQL INSTEAD OF条件未评估
CREATE TRIGGER RosterDeleteTrigger1
ON dbo.Roster
INSTEAD OF INSERT
AS
BEGIN
DECLARE @val int
SELECT @val = COUNT(*)
FROM
(
SELECT r.RosterID, r.TeamID
FROM Roster r
JOIN inserted i
ON r.RosterID = i.RosterID
WHERE r.TeamID = i.TeamID
AND r.PlayerStatus = 'Active'
) src;
PRINT @val
IF(@val) > 6
PRINT 'hello'
--More code to allow the commit if @val is under 6
END
的IF
声明只是现在来测试逻辑。到目前为止,它不打印hello
。 insert语句插入到TeamID 1
,它有7个成员,所以它应该进行评估。 @val
打印出一个0,所以我不知道我的计数查询究竟出了什么问题。
最终我想允许提交如果计数很低,但我甚至没有想出如何开始。
放弃使用触发器。使用IF EXISTS语句来检查玩家数量并强制插入使用此方法。通过这种方式,您可以防止昂贵的插入操作(以及可能需要的任何锁定)从一开始就发生。 –