我要做的是使客户订单不能在 Order 中多次指定相同的产品。我认为我需要检查CustomerOderId是否相同,是否检查了它们是否具有多个相同的ProductId,但是我不确定该如何处理。我的数据库中有以下表格
**OrderProduct**
(Id) int
(CustomerOrderId) int
(ProductId) int
(Quantity) int
(ProdcutRating) int
**CustomerOrder**
(Id) int
(CustomerId) int
(AddedDate) datetime
**Product**
(Id) int
(Name) nvarchar(75)
(Price) int
(AddedDate) datetime
我尝试了以下方法,但我认为可以。使其没有其他客户可以订购相同的产品和两种产品;必须删除所有当前重复项
ALTER TABLE OrderProduct ADD CONSTRAINT [IX_UniqueProductId] UNIQUE
NONCLUSTERED (ProductId ASC)
有人吗?
答案 0 :(得分:2)
如果我正确地理解了您的问题(以及您的数据设置),那么您所要做的就是将customerOrderId列添加到唯一索引中。这样一来,每个客户订单只能购买一次产品。
ALTER TABLE OrderProduct ADD CONSTRAINT [IX_UniqueProductId] UNIQUE
NONCLUSTERED (ProductId ASC, CustomerOrderID ASC)
这假定每次客户订购时都会生成一个新的客户订单ID,并且同一客户可以在后续订单中订购同一产品。
答案 1 :(得分:0)
如果我了解您,则您的OrderProduct中的每个customerOrder只需要一种产品。为此,您应该使用(productId,CustomerOrderId)作为OrderProduct表的主键,以便存在一对一的关系。
ALTER TABLE OrderProduct ADD CONSTRAINT [IX_UniqueProductId] UNIQUE
NONCLUSTERED (ProductId ASC, CustomerOrderID ASC)