100分 触发器的问题,为什么错误提示说:在触发器不中允许使用ALRER DATABSE呢
触发器的问题,为什么错误提示说:在触发器不中允许使用ALRER DATABSE呢?
太怪了
下面是脚本
USE HAIDI
GO
ALTER TRIGGER EventInsert
ON Articles
AFTER INSERT
AS
BEGIN
/* 只链接@LINK_RANGE天内的文章 */
DECLARE @LINK_RANGE INT;
SELECT @LINK_RANGE=5;
/* 为刚刚添加的文章添加链接,同时为@LINK_RANGE天数之内的文章添加链接 */
DECLARE @nID INT,@oID INT,@nKeywords NVARCHAR(50),@oKeywords NVARCHAR(50);
SELECT @nID=[ArticleID],@nKeywords=[Keywords] FROM INSERTED;
DECLARE c CURSOR FOR
SELECT [ArticleID],[Keywords] FROM [Articles]
WHERE [AddTime]>DATEADD(DAY,0-@LINK_RANGE,GETDATE()) AND [Keywords] IS NOT NULL AND [ArticleID]<>@nID
OPEN c
FETCH NEXT FROM c
INTO @oID,@oKeywords
WHILE @@FETCH_STATUS = 0
BEGIN
--替换刚刚添加的文章
EXEC AddAnchors @oKeywords,@nID,@oID;
--替换原有文章
EXEC AddAnchors @nKeywords,@oID,@nID;
FETCH NEXT FROM c
INTO @oID,@oKeywords
END
CLOSE c
DEALLOCATE c
END
////////////////////////////////////////////////
请注意,函数AddAnchors单独测试没有错误,,,在AddAnchors里面,会对表Articles表有更新的操作。。我知道问题出在这里,但是,单独调试没有错误啊。
但是,在触发器里面运行就出错了。
另外,我上面写的触发器是应该是在插入以后才会触发的,但是,问题是,显示“在触发器中不允许使用ALTER DATABASE后”,,,文章并没有被插入进去。
所以,SELECT @nID=[ArticleID],@nKeywords=[Keywords] FROM INSERTED;时
所取得的@nID,并不是实际在Articles表中的值,因此,在AddAnchors中,对Artilces表进行更新的时候就会出错。。
我的猜测是对吗,应该怎么修改