В нашей розничной системе мы планируем перенести информацию о корзине из файлов cookie браузера в таблицу. В настоящее время мы реализуем ограничения корзины в приложении C#, но хотели бы перенести эту бизнес-логику в базу данных в виде ограничений, если это возможно.
CREATE TABLE [dbo].[BasketProduct](
[BasketProductId] [int] IDENTITY(1,1) NOT NULL,
[BasketId] [int] NOT NULL,
[ProductId] [int] NOT NULL,
[Quantity] [int] NOT NULL,
CONSTRAINT [PK_BasketProduct] PRIMARY KEY CLUSTERED
([BasketProductId] ASC))
Мы хотим, чтобы каждая корзина содержала не более 10 уникальных элементов, но разрешала любое количество каждого из них, поэтому значение BasketId должно присутствовать в таблице не более 10 раз.
Кажется, что для этого нет очевидных ограничений, поскольку агрегаты, включая оконные функции, не разрешены в вычисляемых столбцах.
Может ли кто-нибудь порекомендовать подходящий метод?
INSERT
/DELETE
/UPDATE
.CONSTRAINT
— это неправильное место, так как они обрабатывают правила для конкретной строки, а не для подмножеств таблицы. - person Larnu   schedule 23.12.2019