对于小型销售相关应用程序,我们使用逻辑数据模型设计数据库。来到舞台转换为物理模型。在SQL Server Management Studio Express中创建表时,根据我们的逻辑数据模型,我们需要组合两个属性来形成唯一的id。是否可以组合两个主键并进行设置?
但是在观察Northwind Sample时,我们发现在ORDER DETAILS
表中,我们可以看到两个主键Order Id
& Product Id
。并且根据规则表不能有两个主键。那么在Northwind发生了怎么样?
在我的情况下,如何在表格中设置两列以使其成为两个主键?
有人给出了像
这样的建议要制作两个主键,请在设计视图中打开表格,然后单击 在两个必填字段上并按住CTL,应用主键
这会起作用吗?
编辑;
现在我的桌子在SSMS中有2个PK。它是有效的还是只有2 pks
的组合答案 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]