---- Справочник_подработ - FOR INSERT, UPDATE ----
  -- при выставлении значений проверяется
  -- 1) что виды работ с такими кодами вообще существуют 
  -- 2) что пара Код_вида_работы-Код_вида_подработы не образует цикла
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[OnSubworkTypeUpdate]') and xtype = N'TR')
  drop trigger [dbo].[OnSubworkTypeUpdate]
GO
CREATE TRIGGER OnSubworkTypeUpdate 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.IsInSubworkTypes(Код_вида_работы,Код_вида_подработы) = 1)
  begin
    RAISERROR ('Ошибка при попытке установить значения в таблицу Справочник_подработ. Установка переданной пары значений вызывает цикл',16,1)
    ROLLBACK TRANSACTION
  end
