如何在表中设置(组合)两个主键

时间:2012-07-20 11:45:35

标签: ssms sql-server-express database composite-primary-key

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

但是在观察Northwind Sample时,我们发现在ORDER DETAILS表中,我们可以看到两个主键Order Id& Product Id。并且根据规则表不能有两个主键。那么在Northwind发生了怎么样?

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

有人给出了像

这样的建议
  

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

这会起作用吗?

编辑;

现在我的桌子在SSMS中有2个PK。它是有效的还是只有2 pks enter image description here

的组合

4 个答案:

答案 0 :(得分:15)

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

设计并创建表后,请尝试以下方法:

ALTER TABLE dbo.YourTableNameHere
ADD CONSTRAINT PK_YourTableNameHere
PRIMARY KEY(Item_Id, Purchase_Id)

答案 1 :(得分:2)

您无法在表格中创建两个主键。您可以在表中组合两列,并将其作为单个主键

create table table1
(
col1 int,
col2 varchar(20),
....
Primary key (col1, col2)
)

答案 2 :(得分:0)

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

答案 3 :(得分: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]