У нас есть несколько пользовательских объектов, смоделированных через EDL, которые имеют внешние ключи к системным объектам Intershop (ISPRODUCT и ISORDER).Нам нужно, чтобы наши объекты были удалены при ссылочном заказе или при удалении товара.
Это извлечение из файла EDL:
/**
* Relation to product PO (tariff item)
*/
dependency tariff: ProductPO
{
foreign key(tariffID);
}
/*
* Order relation
*/
dependency order: OrderPO
{
foreign key(orderID);
}
Как я вижу, можно добавить действия удаления для отношений EDL, но невозможно добавить действия удаления для зависимостей.,
На данный момент мы модифицируем операторы в сгенерированных файлах dbconstraints.oracle.ddl следующим образом:
EXEC staging_ddl.add_constraint('A1APPLICATIONFORM', 'A1APPLICATIONFORM_CO_003', 'FOREIGN KEY (TARIFFID) REFERENCES PRODUCT (UUID) ON DELETE SET NULL INITIALLY DEFERRED DEFERRABLE DISABLE NOVALIDATE');
EXEC staging_ddl.add_constraint('A1APPLICATIONFORM', 'A1APPLICATIONFORM_CO_004', 'FOREIGN KEY (ORDERID) REFERENCES ISORDER (UUID) ON DELETE CASCADE INITIALLY DEFERRED DEFERRABLE DISABLE NOVALIDATE');
Но это только временный обходной путь, потому что эти файлы получатперезаписывается каждый раз, когда мы перезапускаем генератор кода в EDL.
В отношении можно определить действие при удалении следующим образом:
relation promotionBenefitPOs : A1PromotionBenefitPO[0..n] inverse promotionPO implements promotionBenefits delete default;
Можно ли добиться того же призависимость от системных объектов?