Вот код. Это триггер, который выполняется после вставкиКак я могу остановить выполнение триггера изнутри самого себя?
ALTER TRIGGER [dbo].[GameStacker]
ON [dbo].[CDKeyUser]
AFTER INSERT AS
BEGIN
INSERT INTO User_Achivement
(User_ID ,
Achivement_ID,
Date
)
VALUES ((SELECT User_ID from inserted),
(SELECT
CASE
WHEN COUNT(cd.User_ID)=1 THEN 1
WHEN COUNT(cd.User_ID)=5 THEN 2
WHEN COUNT(cd.User_ID)=10 THEN 3
WHEN COUNT(cd.User_ID)=15 THEN 4
END
FROM CDKeyUser cd
WHERE cd.User_ID=(SELECT User_ID from inserted)
),
GETDATE()
)
END
Так что моя проблема заключается в том, что этот триггер выполняется после каждой вставки. (Я знаю, что то, как это должно работать.) Но, если КОГДА COUNT (кд. User_ID) имеет значение, отличное от указанных здесь значений, оно не должно выполняться или просто прерывать выполнение. Если я добавлю инструкцию else после WHEN COUNT(cd.User_ID)=15 THEN 4
, я не могу включить туда какой-либо код, например, raiseerror, потому что он переведен в значение Achivement_ID, и это дает мне ошибку. Так что в основном я должен разорвать выполнение инструкции insert.
Я был бы очень признателен, если кто-то может помочь мне с этим
Это только начинается с альтер, потому что она была создана, и я был только его модификации. –