【发布时间】:2014-11-13 03:25:44
【问题描述】:
这里是代码。它是一个在插入之后执行的触发器
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
所以我的问题是这个触发器在每次插入之后执行。(我知道它应该是这样工作的。)但是,如果 WHEN COUNT(cd.User_ID) 的值不是这里指定的值,它应该不执行,或者只是中断执行。如果我在WHEN COUNT(cd.User_ID)=15 THEN 4 之后添加一个 else 语句,我不能在其中包含任何代码,例如 raiseerror,因为它被转换为 Achivement_ID 的值,它给了我一个错误。
所以基本上我必须中断插入语句的执行。
如果有人能帮我解决这个问题,我将不胜感激
【问题讨论】:
-
它只是以 alter 开头,因为它是创建的,我只是在修改它。
标签: sql-server triggers insert-into