У меня есть файл базы данных Access со следующими таблицами и связями (упрощенная версия бизнес-логики c в моем приложении)
![enter image description here](https://i.stack.imgur.com/haVxH.png)
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#) заявка