找回密码
 立即注册
查看: 396|回复: 1

[综合] 新注册玩家完成所有任务设置教程

[复制链接]

54

主题

11

回帖

2049

积分

管理员

积分
2049
发表于 2024-4-28 19:39:18 | 显示全部楼层 |阅读模式
要修改你的 SQL 触发器代码,以便新建触发器使得当人物等级大于49时任务值就满,可以调整你原有的 TR_UPDATE_TBLGAMEID1 触发器代码中的条件检查。下面是调整后的代码:
  1. USE redmoon
  2. GO

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

  7. -- 创建新的触发器
  8. CREATE TRIGGER TR_UPDATE_TBLGAMEID1 ON TBLGAMEID1
  9. FOR UPDATE
  10. AS
  11. BEGIN
  12.     IF UPDATE(Lvl)
  13.     BEGIN
  14.         DECLARE @GAMEID CHAR(14)
  15.         DECLARE @LEVEL INT
  16.         DECLARE crGAMEID CURSOR FOR SELECT GAMEID, LVL FROM INSERTED
  17.         OPEN crGAMEID
  18.         FETCH NEXT FROM crGAMEID INTO @GAMEID, @LEVEL
  19.         WHILE @@FETCH_STATUS = 0
  20.         BEGIN
  21.             IF @LEVEL > 49
  22.             BEGIN
  23.                 UPDATE TBLGAMEID1 SET StoryQuestState = 131071 WHERE GAMEID = @GAMEID
  24.             END
  25.             FETCH NEXT FROM crGAMEID INTO @GAMEID, @LEVEL
  26.         END
  27.         CLOSE crGAMEID
  28.         DEALLOCATE crGAMEID
  29.     END
  30. END;
  31. GO
复制代码

这个触发器在 TBLGAMEID1 表上,当有记录的 Lvl 字段被更新时触发。如果更新后的等级大于49,则将该记录的 StoryQuestState 设置为131071(假设这代表任务值满)。使用游标遍历 INSERTED 虚拟表中的所有被更新的记录,对符合条件的记录进行更新。
如果你不再需要这个触发器,可以使用以下 SQL 语句删除它:

  1. DROP TRIGGER IF EXISTS TR_UPDATE_TBLGAMEID1;
  2. GO
复制代码
确保在测试或生产环境中运行这些代码之前,备份相关数据,以避免任何意外的数据丢失。如果你在执行过程中遇到任何错误,请告诉我错误信息,我会帮助你调试。


2

主题

216

回帖

3495

积分

中级会员

积分
3495
发表于 2024-7-14 13:46:11 | 显示全部楼层
!上向天天,习学好好
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|玩红月技术论坛 |网站地图

GMT+8, 2024-9-8 09:36 , Processed in 0.046865 second(s), 23 queries .

快速回复 返回顶部 返回列表