设置两个字段主键

Posted

技术标签:

【中文标题】设置两个字段主键【英文标题】:set two field primary key 【发布时间】:2011-11-05 18:33:41 【问题描述】:

表1


id1 ==> 数字

id2 ==> 数字


id 希望 id1 包含唯一编号,id2 包含唯一编号。

如何设置id1和id2primary key

【问题讨论】:

【参考方案1】:

在表设计器中,选择两行,然后单击工具栏中的主键按钮。

或者,打开查询设计器,将视图更改为 SQL 视图,然后键入以下代码:

ALTER TABLE your_table_name ADD CONSTRAINT your_pk_name PRIMARY KEY(id1, id2);

然后,点击运行按钮。这将创建一个包含这两个字段的主键。

如果您询问是否在两列中都有一个自动递增整数字段,则不能。您必须以编程方式执行此操作。访问(和大多数其他数据库)只允许每个表有一个“自动编号”字段。

【讨论】:

然而,这可能不是最佳实践,因为如果您想在任何时候将数据连接到该表,您必须定义多个连接,这不仅使您的 SQL 看起来很时髦,而且我也可以想象会降低性能。此外,如果您正确设计数据库,用户甚至可能看不到主键(除非它代表一个有意义的数字供他们稍后参考)。因此,在我的所有数据库中,我将每个表作为一个字段来表示该表的主键。 @William - 同意的 compsit 键有点痛苦,如果可以避免的话,没有理由使用它。但是,有非常有效的案例,“参考”表,表示多对多关系只是一个。此外,您指出“除非它对他们 [用户] 代表一个有意义的数字”。我要补充一点,使用对用户具有任何语义意义的 PK 只是在询问坏消息。话虽如此,每张桌子只有一个 PK 是理想的,直到它不是:-) 然而,在某些情况下,PK 对用户来说是有意义的。以罗斯文数据库为例,您可以拥有客户和订单。在这种情况下,Orders.ID 列可能是一个主键,但对于可能希望通过订单号查找特定订单的最终用户来说具有一定的意义。

以上是关于设置两个字段主键的主要内容,如果未能解决你的问题,请参考以下文章

SQL怎样用命令设置主键

在oracle 怎样设置自动递增的的字段,也就是设置自动递增的ID 主键

DB2中怎么设置主键

sql用命令创建主键与外键。

SpringDataJPA使用Oracle序列设置值:主键字段、非主键字段

MS SQL 2008 设置主键 该列值为啥还能重复