DROP FUNCTION IF EXISTS akuz.street_code_insert_update CASCADE;

CREATE FUNCTION akuz.street_code_insert_update()
  RETURNS trigger AS
$BODY$
BEGIN
	If exists( Select * From akuz.T_STREET s where s.StreetID <> new.StreetID And s.Code = new.Code )
	then
		Raise Exception Using Message = 'Попытка внести улицу с кодом, который уже есть в БД:' || new.Code;
		Return New;
	End if;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
--ALTER FUNCTION akuz.street_code_insert_update()  OWNER TO postgres;

CREATE TRIGGER street_code
  AFTER INSERT OR UPDATE OF code
  ON akuz.t_street
  FOR EACH ROW
  EXECUTE PROCEDURE akuz.street_code_insert_update();