Триггеры INSTEAD OF в MS-SQL

При создании триггера типа INSTEAD OF вызываемое действие подменяется вызовом триггера.
Например если перед удалением строки таблицы Вам нужно удалить еще несколько строк БД, то после этого нужно удалить сами строки, обрабатываемые триггером (обратите внимание на выделенную строку).
Таблица deleted – содержит строки, которые в соответсвие с запросом должны быть удалены из таблицы, на которой создан триггер.

GO
/****** Object:  Trigger [dbo].[SiteDelete]    Script Date: 03/09/2009 16:48:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:  Timofey Koolin
-- Create date: 2009-03-08
-- Description: 
-- =============================================
CREATE TRIGGER [dbo].[SiteDelete]
   ON  [dbo].[Site]
   INSTEAD OF DELETE
AS
BEGIN
 DELETE FROM TemplateSettings WHERE SiteID IN (SELECT ID from deleted);
 DELETE FROM InterfaceSettings WHERE SiteID IN (SELECT ID from deleted);
 DELETE FROM PublicObject WHERE SiteID IN (SELECT ID from deleted);
 DELETE FROM Site WHERE ID IN (SELECT id from deleted);
END

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *