---- Спр_состава_УРЗА - FOR INSERT, UPDATE ----
  -- при выставлении значений проверяется
  -- 1) что типы УРЗА с такими кодами вообще существуют 
  -- 2) что пара Код_типа_устройства-Код_типа_подустройства не образует цикла
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[OnSubdefenceTypeUpdate]') and xtype = N'TR')
  drop trigger [dbo].[OnSubdefenceTypeUpdate]
GO
CREATE TRIGGER OnSubdefenceTypeUpdate ON [dbo].[Спр_состава_УРЗА] 
FOR INSERT, UPDATE
AS
  if exists (SELECT 1 FROM inserted WHERE Код_типа_устройства not in (SELECT Код_типа_УРЗА FROM Справочник_типов_УРЗА))
  begin
    RAISERROR ('Ошибка при попытке установить значения в таблицу Спр_состава_УРЗА. Попытка установить несуществующий Код_типа_устройства',16,1)
    ROLLBACK TRANSACTION
  end
  if exists (SELECT 1 FROM inserted WHERE Код_типа_подустройства not in (SELECT Код_типа_УРЗА FROM Справочник_типов_УРЗА))
  begin
    RAISERROR ('Ошибка при попытке установить значения в таблицу Спр_состава_УРЗА. Попытка установить несуществующий Код_типа_подустройства',16,1)
    ROLLBACK TRANSACTION
  end
  if exists (SELECT 1 FROM inserted WHERE dbo.IsInSubDefenceTypes(Код_типа_устройства,Код_типа_подустройства) = 1)
  begin
    RAISERROR ('Ошибка при попытке установить значения в таблицу Спр_состава_УРЗА. Установка переданной пары значений вызывает цикл',16,1)
    ROLLBACK TRANSACTION
  end