如何设置(组合)表中的两个主键(How to set (combine) two primary k

2019-06-26 10:25发布

对于一个小的销售相关的应用中,我们使用逻辑数据模型设计的数据库。 走到台前,以转换成物理模型。 虽然在SQL Server Management Studio快速创建表,根据我们的逻辑数据模型,我们需要两个属性结合起来,形成独特的ID。 是否有可能两个主键相结合,设置呢?

但同时观察罗斯文示例中,我们发现,在ORDER DETAILS表格中,我们可以看到两个主键Order IdProduct Id 。 而根据规则表不能有两个主键。 那么它是如何发生的罗斯文?

在我的情况我应该怎么在我的表组的两列,使其作为两个主键?

有人给建议像

为了使两个主键,在设计视图中打开表,并单击两个必填字段并保持CTL,应用主键

将这项工作?

编辑;

现在我的表必须在SSMS 2分PK的。 是有效的,或者它仅仅是一个combinationof 2 PKS

Answer 1:

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

一旦你设计并创建表,尝试这样的事情:

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


Answer 2:

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

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


Answer 3:

你不能有2个主键,但你可以有一个复合主键,这是由两列的关键,而这正是你与[的SalesOrderID]和[的SalesOrderDetail表得到了什么[SalesOrderDetailID]



Answer 4:

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] 


文章来源: How to set (combine) two primary keys in a table