在一个 AccountID 上设置多个 "primary keys"

Set multiple "primary keys" on one AccountID

这似乎是一个简单的问题。但是,我被屏蔽了。

我有 6 个产品 ID:100110021003100410051006.

在 table 中,我还有一个帐户 ID 列表。每个帐户 ID 可以有许多产品 ID 之一 (1-6),但不能重复。

如何添加约束以允许 table 中的多个 AccountID,最多可以有 1-6 个产品 ID,但每个帐户的 none 个 productID 可以重复?

示例Table:

好Table

Account_ID  ProductID
138777  100004
138777  100003
--------------
21252   100003
138778  100003
138779  100004
138780  100003
138781  100001
138782  100004

不好table

Account_ID  ProductID
138777  100003
138777  100003
---------------
21252   100003
138778  100003
138779  100004
138780  100003
138781  100001
138782  100004

实施此约束的最合乎逻辑的方法是什么?

您可以在 Account_IDProductID 列上创建 composite primary key

你可以从这个SO中学习post How can I define a composite primary key in SQL?

如果已经创建,您可以更改 table 以添加复合主键,如下所示。

ALTER TABLE < YourTableName > ADD CONSTRAINT [name of PK, e.g. PK_AccountProduct] PRIMARY KEY (
    Account_ID
    ,ProductID
    )

您可以在 SQL 服务器管理工​​作室中执行此操作,方法是在设计视图中打开 table 并选择两列,然后右键单击并设置 composite/primary 键。

在 SSMS 中,它看起来如下所示: