-- не позволяем выставлять Зданиям такие адреса, у которых все поля совпадают с полями адреса, уже выставленного у другого Здания
CREATE TRIGGER OnBuildingsUpdate ON [dbo].[Buildings] 
FOR INSERT, UPDATE
AS
  if exists(
    select 1 
    from Buildings
    inner join inserted on Buildings.BuildingID <> inserted.BuildingID 
    inner join AddressBaseParts A on A.AddressID = Buildings.AddressID
    inner join AddressBaseParts b on b.AddressID = inserted.AddressID    
    where
      IsNull(A.LocalityID,0) = IsNull(b.LocalityID,0) AND
      IsNull(A.StreetID,0) = IsNull(b.StreetID,0) AND
      IsNull(A.EstateType,0) = IsNull(b.EstateType,0) AND 
      IsNull(A.Estate, '') = IsNull(b.Estate, '') AND
      IsNull(A.Fraction, '') = IsNull(b.Fraction, '') AND
      IsNull(A.Building, '') = IsNull(b.Building, '') AND
      IsNull(A.Housing, '') = IsNull(b.Housing, '') AND
      IsNull(A.Note, '') = IsNull(b.Note, ''))
  begin
    RAISERROR ('Ошибка при попытке установить адрес в таблицу Buildings. Здание с полностью идентичным адресом уже существует!',16,1)
    ROLLBACK TRANSACTION
  end
