Такого же эффекта можно достичь средствами одного только SQL, используя обновляемые представления (updateable view).
Создадим представление для отображения данных бизнес-объекта Компания:
create view vcompany as
  select * from
    gd_contact c 
    join gd_company co on c.id=co.contactkey
    left join gd_companycode cc on cc.companykey = c.id
Создадим триггер:recreate trigger vcompany_ai for vcompany
  after insert
  position 0
as
  declare variable id integer;
begin
  if (NEW.id IS NULL) then
    id = GEN_ID(gd_g_unique, 1);
  else
    id = NEW.id;
  insert into gd_contact (id, parent, contacttype, name)
    values (:id, NEW.parent, 3, NEW.name);
  insert into gd_company (contactkey, fullname)
    values (:id, NEW.name);
end
Теперь добавить компанию в базу данных можно с помощью команды:insert into vcompany (name, parent)
  values ('Company name', some_existing_folder_id)
Аналогичным образом реализуем обновление и удаление данных.
 
 
Комментариев нет:
Отправить комментарий