Для этого вида поведения с лимитированным но по возможности изменяя количеством возможностей, котор я выбрал бы следующий подход, то требует как раз немного изменений от поведения невыполнения обязательства форм оракула.
Создайте временно таблицу
создайте глобальное cartesian_check временно таблицы
((PEOPLEID (такой же тип как другое),
interest_id (такой же тип как другое),
ИНТЕРЕСЫ (такой же тип как другое),
проверенные varchar2 (1))
НА ПОРУЧИТЕ РЯДКИ ЗАПОВЕДНИКА;
определите блок ребенка на временно таблице и маркируйте его как только updateble;
только интересы колонок и после того как я проверены видимо, и только проверено будет updateble
в pre-quiry пуске блока ребенка
delete от cartesian_check;
вставка в cartesian_check
отборно: masterblock.people_id, interest_id, ИНТЕРЕСЫ,
(отборно расшифруйте (отсчет (*), 0, «n», «y ")
от people_interest PI
где people_id PI =: master.people_id
и PI.interest_id = проверенное it.inertestid)
от interests_type ОНО;
в пуске on_update
если проверено = «n» после этого
delete от people_interest PI
где people_id PI =: people_id
и PI.interest_id =: interest_id;
закончитесь если;
если проверено = «y» после этого
вставка в interests_type ОНО
отборно: people_id: interest_id
от двойного
-- предотвратите изменить от y к n к y от вводить второй показатель
ГДЕ НЕ СУЩЕСТВУЕТ (ВЫБЕРИТЕ 1
ОТ people_interest PI
где people_id PI =: people_id
и PI.interest_id =: interest_id)
закончитесь если;