在一个 AccountID 上设置多个 "primary keys"
Set multiple "primary keys" on one AccountID
这似乎是一个简单的问题。但是,我被屏蔽了。
我有 6 个产品 ID:1001
、1002
、1003
、1004
、1005
、1006
.
在 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_ID
和 ProductID
列上创建 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 中,它看起来如下所示:
这似乎是一个简单的问题。但是,我被屏蔽了。
我有 6 个产品 ID:1001
、1002
、1003
、1004
、1005
、1006
.
在 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_ID
和 ProductID
列上创建 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 中,它看起来如下所示: