10

对于与销售相关的小型应用程序,我们使用逻辑数据模型设计了数据库。上台转换成实体模型。在 SQL Server Management Studio Express 中创建表时,根据我们的逻辑数据模型,我们需要将两个属性组合起来形成唯一的 id。是否可以组合两个主键并设置它?

但是在观察 Northwind Sample 时,我们发现在ORDER DETAILS表格中,我们可以看到两个主键Order Id& Product Id。并且根据规则表不能有两个主键。那么它是如何在北风发生的呢?

在我的情况下,我应该如何在我的表中设置两列以使其成为两个主键?

有人提出了类似的建议

要创建两个主键,请在设计视图中打开表格并单击两个必填字段并按住 CTL,应用主键

这行得通吗??

编辑 ;

现在我的桌子在 SSMS 中有 2 个 PK。它是有效的还是只是 2 pks 的组合在此处输入图像描述

4

4 回答 4

20

最简单的方法是在 SSMS Express 中使用 T-SQL 命令,而不是尝试使用可视化设计器.....

设计并创建表格后,请尝试以下操作:

ALTER TABLE dbo.YourTableNameHere
ADD CONSTRAINT PK_YourTableNameHere
PRIMARY KEY(Item_Id, Purchase_Id)
于 2012-07-20T11:52:58.797 回答
3

您不能在表中创建两个主键。您可以将表中的两列合并为一个主键

create table table1
(
col1 int,
col2 varchar(20),
....
Primary key (col1, col2)
)
于 2012-07-20T11:52:23.283 回答
0

您不能有 2 个主键,但可以有一个复合主键,它是由两列组成的键,这正是您在 [SalesOrderDetail] 表中使用 [SalesOrderID] 和 [SalesOrderDetailID] 得到的

于 2012-07-20T11:50:50.090 回答
0
CREATE TABLE [dbo].[tab2](  
    [col1] [int] NOT NULL, 
    [col2] [int] NOT NULL, 
    [col3] [nchar](10) NOT NULL,  
    [col4] [nchar](10) NOT NULL,   
 CONSTRAINT [PK_tab2] PRIMARY KEY CLUSTERED    
(  
    [col1] ASC, 
    [col2] ASC 
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]  
) ON [PRIMARY] 
于 2012-07-20T11:56:27.863 回答