Обеспечение соблюдения этого ограничения в базе данных является сложной задачей. Проблема:
- Невозможно вставить меню, потому что в этом меню нет пунктов меню (ваше новое состояние).
- Невозможно вставить пункт меню, потому что меню не существует (очевидно из текущей модели данных).
Вместо этого добавьте флаг к menus
, который дает информацию о наличии каких-либо пунктов меню. Тогда выбирайте только меню с предметами. Один из способов сохранения этой информации - использование триггеров. Тем не менее, вы также можете просто использовать представление:
create view v_menus as
select v.*
from menus m
where exists (select 1 from menuitems mi where mi.menu_id = m.menu_id);