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語句來檢查玩家數量並強制插入使用此方法。通過這種方式,您可以防止昂貴的插入操作(以及可能需要的任何鎖定)從一開始就發生。 –