Любой тригер фактически пишется по шаблону. Шаблон с необходимыми комментариями показан ниже:
Код:
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
©Martin