在 Access 中添加或更改表的主键
Applies ToMicrosoft 365 专属 Access Access 2024 Access 2021 Access 2019 Access 2016

主键是一个字段或一组字段,其值在整个表中是唯一的。 键值可用于引用整个记录,因为每个记录有不同的键值。 每个表只能有一个主键。 Access 可在创建表时自动创建主键字段,或者你也可指定要用作主键的字段。 本文介绍使用主键的方式及原因。

若要设置表的主键,请在设计视图中打开表。 选择要使用的字段,然后在功能区上单击“主键”。

注意: 本文仅适用于 Access 桌面数据库。 Access 自动管理 Access Web 应用和 Web 数据库中新表的主键。 虽然可以覆盖这些自动主键,但建议不要这样做。

本文内容

Access 中的主键概述

Access 使用主键字段快速关联多个表中的数据,并以有意义的方式组合这些数据。 可以包含其他表中的主键字段以向回引用主键源的表。 在这些其他表中,字段称为外键。 例如,“客户”表中的“客户 ID”字段也可能会显示在“订单”表中。 在“客户”表中,它是主键。 而在“订单”表中,它被称作外键。 简而言之,外键就是另一个表的主键。 有关详细信息,请参阅数据库设计基础

两个 Access 数据表之间显示的主键和外键

1. 主键

2. 外键

如果将现有数据移到数据库中,您可能已经拥有了可用作主键的字段。 通常,唯一的标识号(如 ID 号、序列号或代码)充当表中的主键。 例如,您可能有一个“客户”表,其中每个客户都有一个唯一的客户 ID 号。 客户 ID 字段是主键。

Access 会自动为主键创建索引,这有助于加快查询和其他操作的速度。 Access 还确保每条记录的主键字段中都有一个值,并且该值始终是唯一的。

在数据表视图中创建新表时,Access 自动创建主键,并且为它指定字段名“ID”和“自动编号”数据类型。

什么是好的主键?

一个好的候选主键具有以下几个特征:

  • 唯一标识每一行

  • 从不为空或为 Null,即它始终包含一个值 

  • 所包含的值几乎不(理想情况下永不)改变

如果无法识别好的键,则创建“自动编号”字段用作键。 “自动编号”字段在首次保存每条记录时,会自动为自己生成一个值。 因此,“自动编号”字段满足一个好的主键的所有三个特征。 有关添加“自动编号”字段的详细信息,请参阅添加“自动编号”字段作为主键一文。

Access 表设计视图中标记为 ID 的 AutoNumber 主键

“自动编号”字段是一个好的主键。

较差主键的示例

缺少一个或多个好的候选主键特征的任何字段对于主键都是糟糕的选择。 下面是会让“联系人”表的主键成为较差主键的几个字段示例,以及成为糟糕选择的原因。

较差主键

原因

个人姓名

可能不确定唯一,还可能改变

电话号码

可能会改变。

电子邮件地址

可能会改变。

邮政编码

可能多人共享一个邮政编码

事实和数字的组合

事实部分可能有所变化,带来维护负担。 如果事实部分作为单独字段重复,则可能导致混乱。 例如,将城市和增量号码(例如 NEWYORK0579)组合在一起,如果城市也存储为字段,则是糟糕的选择。

社会保障号

  • 政府部门和一些组织不允许隐私信息。

  • 某些用户没有 SSN

  • 个人一生中可能使用多个

复合键:将多个字段组合在一起作为主键使用

某些情况下,你希望将表中的两个或多个字段用作主键。 例如,存储订单行项目的“订单明细”表可能在其主键中使用两个字段:“订单 ID”和“产品 ID”。 具有多个字段的键称为组合键。

使用 Access ​​中已有的字段设置主键

要使主键正常工作,该字段必须唯一标识每一行,决不包含空值或 Null 值,并且很少(理想情况下永不)改变。 要设置主键,请执行下列操作:

  1. 打开要修改的数据库。

  2. 在导航窗格中,右键单击要设置主键的表,然后在快捷菜单上,单击“设计视图”

    提示: 如果未显示导航窗格,请按 F11 显示导航窗格。

  3. 选择要用作主键的一个或多个字段。

    若要选择一个字段,请单击所需字段的行选择器。

    要选择多个字段创建组合键,请按住 Ctrl,然后单击每个字段的行选择器。

  4. 在“ 表设计 ”选项卡上的“ 工具” 组中,单击“ 主键”。

    “设计”选项卡上的“工具”组

    将键指示器添加到指定为主键的一个或多个字段的左侧。

删除 Access 中的主键

删除主键时,以前作为主键的一个或多个字段将不再作为标识记录的主要方式。

删除主键不会删除表中的字段,但是会删除为主键创建的索引。

  1. 删除主键前,必须确保它没有参与任何表关系。 如果尝试删除作为一个或多个关系的一部分的主键,则 Access 警告你必须首先删除关系。要删除表关系,请执行以下步骤:   

    1. 如果参与表关系的表处于打开状态,请关闭它们。 不能删除打开的表之间的表关系。

    2. “数据库工具”选项卡上的“关系”组中,单击“关系”

      Access 功能区图像

    3. 选择“ 添加表”。

    4. 单击要删除的表关系的表关系行(当选中该行时,该行变粗),然后按 Delete 键。

    5. 在“ 关系设计 ”选项卡上的“ 关系” 组中,单击“ 关闭”。

  2. 删除关系之后,在导航窗格中,右键单击要删除的主键所在的表,然后单击“设计视图”

    提示: 如果未显示导航窗格,请按 F11 显示导航窗格。

  3. 单击当前主键的行选择器。

    如果该主键只包含一个字段,则单击该字段的行选择器。

    如果该主键包含多个字段,则单击该主键中任何字段的行选择器。

  4. 在“ 表设计 ”选项卡上的“ 工具” 组中,单击“ 主键”。

    以前指定为主键的一个或多个字段中的键指示器被删除。

注意: 保存一个新表而不设置主键时,Access 会提示您创建一个主键。 如果选择“是”,Access 会创建一个使用“自动编号”数据类型的 ID 字段,为每条记录提供一个唯一值。 如果您的表中已有一个“自动编号”字段,Access 会将该字段用作主键。

更改 Access 中的主键

如果决定更改表的主键,则可以通过执行下列步骤来完成:

  1. 使用删除主键部分中的说明删除现有主键。

  2. 使用设置主键部分中的说明设置主键。

其他信息

有关数据库设计和选择适当主键的详细信息,请参阅文章:

返回页首

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。