whongyue 发表于 2024-4-28 19:39:18

新注册玩家完成所有任务设置教程

要修改你的 SQL 触发器代码,以便新建触发器使得当人物等级大于49时任务值就满,可以调整你原有的 TR_UPDATE_TBLGAMEID1 触发器代码中的条件检查。下面是调整后的代码:
USE redmoon
GO

-- 删除原有的触发器(如果存在)
IF EXISTS (SELECT * FROM sys.triggers WHERE object_id = OBJECT_ID(N'TR_UPDATE_TBLGAMEID1'))
    DROP TRIGGER TR_UPDATE_TBLGAMEID1;
GO

-- 创建新的触发器
CREATE TRIGGER TR_UPDATE_TBLGAMEID1 ON TBLGAMEID1
FOR UPDATE
AS
BEGIN
    IF UPDATE(Lvl)
    BEGIN
      DECLARE @GAMEID CHAR(14)
      DECLARE @LEVEL INT
      DECLARE crGAMEID CURSOR FOR SELECT GAMEID, LVL FROM INSERTED
      OPEN crGAMEID
      FETCH NEXT FROM crGAMEID INTO @GAMEID, @LEVEL
      WHILE @@FETCH_STATUS = 0
      BEGIN
            IF @LEVEL > 49
            BEGIN
                UPDATE TBLGAMEID1 SET StoryQuestState = 131071 WHERE GAMEID = @GAMEID
            END
            FETCH NEXT FROM crGAMEID INTO @GAMEID, @LEVEL
      END
      CLOSE crGAMEID
      DEALLOCATE crGAMEID
    END
END;
GO

这个触发器在 TBLGAMEID1 表上,当有记录的 Lvl 字段被更新时触发。如果更新后的等级大于49,则将该记录的 StoryQuestState 设置为131071(假设这代表任务值满)。使用游标遍历 INSERTED 虚拟表中的所有被更新的记录,对符合条件的记录进行更新。如果你不再需要这个触发器,可以使用以下 SQL 语句删除它:
DROP TRIGGER IF EXISTS TR_UPDATE_TBLGAMEID1;
GO
确保在测试或生产环境中运行这些代码之前,备份相关数据,以避免任何意外的数据丢失。如果你在执行过程中遇到任何错误,请告诉我错误信息,我会帮助你调试。


Chinese.Doll 发表于 2024-7-14 13:46:11

!上向天天,习学好好
页: [1]
查看完整版本: 新注册玩家完成所有任务设置教程