Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Документация (https://forum.zone-game.info/forumdisplay.php?f=92)
-   -   [Мануал] Создание собственных тригеров (https://forum.zone-game.info/showthread.php?t=5805)

MMd 26.12.2009 15:33

[Мануал] Создание собственных тригеров
 
Любой тригер фактически пишется по шаблону. Шаблон с необходимыми комментариями показан ниже:
Код:

USE [ ]        -- Название используемой базы
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [ ]                -- Название тригера
  ON  [dbo].[ ]                -- Название таблицы, к которой крепится тригер
  FOR UPDATE
AS
SET NOCOUNT ON;

    IF UPDATE ( )                -- Название поля, при обновлении которого выполняется тригер
BEGIN
                        -- Тело тригера
                        -- Здесь пишутся действия, которые должны происходить
                        -- при выполнении тригера
END

END

Ниже приведён пример тригера, который ограничивает кач персов 65м уровнем после того, как они выполнили квест на разблокировку кача на 56м уровне.
Код:

USE [RF_WORLD_NOVUS]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [MaxLv]               
  ON  [dbo].[tbl_general]
  FOR UPDATE
AS
SET NOCOUNT ON;

    IF UPDATE (MaxLevel)        -- При обновлении поля MaxLevel в таблице tbl_general
BEGIN
        declare @serial int                -- Обьявляем переменную @serial типа int
        declare @MaxLv int                -- Обьявляем переменную @MaxLv типа int
        set @serial = (select serial from inserted)        -- Присваиваем переменной серийник персонажа у которого обновляется параметр MaxLevel
        set @MaxLv = (select MaxLevel from tbl_general where serial = @serial)        -- Присваиваем переменной параметр MaxLevel нужного нам перса
        if @MaxLv = 66                        -- Если параметр @MaxLv равен 66му уровню, выполняется следующее действие
        BEGIN
                update tbl_general                -- Указываем, что вносим изменения в таблицу tbl_general
                set MaxLevel = 65                -- Присваиваем значение 65 параметру MaxLevel
                where serial = @serial        -- В строке, у которой параметр serial равен серийнику персонажа
        END                                                -- у которого обновляется параметр MaxLevel
END

Мануал написал мной(MMd).


Текущее время: 08:16. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot