Как не позволить сумме 2 дочерних полей не превышать родительское поле в MS Access - PullRequest
0 голосов
/ 04 мая 2020

У меня есть файл базы данных Access со следующими таблицами и связями (упрощенная версия бизнес-логики c в моем приложении)

enter image description here

I необходимо добавить ограничение в таблицы для проверки полей количества для следующего ( псевдокод, а не фактический код ) условия перед обновлением

In.Quantity >= Sum(Out1.Quantity) + Sum(Out2.Quantity)

ON In.Id = Out1.In AND In.Id = Out2.In

Так что, если это условие не выполняется, то изменение не должно быть разрешено


Обновление

Это пример базы данных, которая отражает реальные бизнес-логики c в моем приложении. Таблица In представляет документ поступающих товаров. Out1 и Out2 представляют документы исходящих документов. Для простоты понимания я просто даю упрощенную версию базы данных.

В случае только одного документа исходящих пунктов проблема легко решается. Например, если у нас есть только одна таблица Out, то следующее ограничение может решить проблему.

В таблице In

ALTER TABLE In
ADD CONSTRAINT InQuantity
CHECK (
    NOT EXISTS (
        SELECT Null 
        FROM In INNER JOIN Out ON Out.In=In.Id
        GROUP BY In.Id, In.Quantity
        HAVING Sum(Out.Quantity)>In.Quantity
    )
)

В таблице Out

ALTER TABLE Out
ADD CONSTRAINT OutQuantity
CHECK (
    NOT EXISTS (
        SELECT Null 
        FROM In INNER JOIN Out ON Out.In=In.Id
        GROUP BY In.Id, In.Quantity
        HAVING Sum(Out.Quantity)>In.Quantity
    )
)

Как не допустить, чтобы сумма дочернего поля не превышала родительское поле в MS Access

И позвольте мне отметить, что мое приложение является. Net (C#) заявка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...