БД имеют некоторое количество OrderItemType, которое имеет отношения между собой, например, НЕПРАВИЛЬНО и ТРЕБУЕТСЯ
Мы объединяем заказ, связывая с ним OrderItemType с отношением CONTAINS
Можно ли сделать ограничениезавершиться с ошибкой проверки при попытке добавить новый OrderItemType, который несовместим с другим в графе, и если требуемые элементы еще не представлены?
Цель просто пытается вставить и получить отклонение, если она нарушает некоторые условия
Другой вариант - использование транзакции: 1. вставить элемент 2. загрузить график и проверить правила вручную 3. откатить, если обнаружите какие-либо проблемы
ОБНОВЛЕНИЕ Хорошо, я перефразирую вопрос со стандартными фильмамиобразец
позволяет установить некоторые отношения между актерами
CREATE (Keanu)-[:HATE]->(JackN),
(Keanu)-[:REQUIRE]->(LillyW),
(JamesM)-[:HATE]->(LillyW)
, теперь мы начинаем новый фильм, производящий
CREATE (RaiseOfCrazyDev:Movie {title:'RaiseOfCrazyDev', released:2020, tagline:'Crazy developer conquer the world'})
и начинаем кастинг.сначала мы подписываем JackN и JamesM
CREATE (JackN)-[:ACTED_IN {roles:['Father']} ]->(RaiseOfCrazyDev),
(JamesM)-[:ACTED_IN {roles:['BadGuy']} ]->(RaiseOfCrazyDev)
теперь мы пытаемся подписать Keanu
CREATE (Keanu)-[:ACTED_IN {roles:['Dev']} ]->(RaiseOfCrazyDev)
Ноон должен потерпеть неудачу, так как Keanu ненавидит JackN , и Keanu требуют LillyW
, поэтому мы удаляем JackN и добавляем вместо него Keanu и LillyW
MATCH (:JackN)-[r:ACTED_IN]-(:RaiseOfCrazyDev) DELETE r
CREATE (Keanu)-[:ACTED_IN {roles:['Dev']} ]->(RaiseOfCrazyDev),
(LillyW)-[:ACTED_IN {roles:['StepSister']} ]->(RaiseOfCrazyDev)
, но теперь снова происходит сбой, потому что JamesM ненавидит LillyW
, поскольку Киану играет главную роль в нашем фильме, мы увольняем Джеймса
MATCH (:JamesM)-[r:ACTED_IN]-(:RaiseOfCrazyDev) DELETE r
Итак, если перефразировать:
- Не должно быть никаких ненавистных отношений междулюбые два актера, прикрепленные к одному фильму
- Для всех актеров их ОБЯЗАТЕЛЬНЫЕ отношения должны быть актерами и в этом фильме.
Вопрос: Каков наилучший способ и место для проверки таких условий