12-26-2009, 03:33 PM
Любой тригер фактически пишется по шаблону. Шаблон с необходимыми комментариями показан ниже:
Ниже приведён пример тригера, который ограничивает кач персов 65м уровнем после того, как они выполнили квест на разблокировку кача на 56м уровне.
Мануал написал мной(MMd).
Код:
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
Код:
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).