Показать сообщение отдельно
Непрочитано 26.12.2009, 15:33   #1
Аватар для 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
Ниже приведён пример тригера, который ограничивает кач персов 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).
MMd вне форума Ответить с цитированием