【问题标题】:autonumber not distintc in access自动编号在访问中不明显
【发布时间】:2016-03-30 05:12:32
【问题描述】:

是否可以创建一个表,其中两列代表一个主键,其中一个是自动编号但不是不同的。类似于 (teacherID,schoolID(FK),teacherName) 的东西,其中前两个是主键,第一个是自动编号。当插入来自不同学校的教师时,teacherID 自动增量应取决于学校。

插入示例

  • 1, 1, 史蒂文
  • 2, 1, 莱斯利
  • 1, 2, 玛丽亚

我知道可以像这样进行 SQL 查询插入,但是在表设置中可以吗?

【问题讨论】:

  • 我根据标题把mysql标签改成ms访问了。

标签: sql ms-access autonumber


【解决方案1】:

这不是自动编号的工作方式。如果你想做这样的事情,你将不得不自己计算。但我必须提醒你不要这样做。我认为这是一张教师桌,你想做的是一个坏主意,因为

  1. 每位教师都应该有自己唯一的钥匙。
  2. 将键设置为复合键是一个坏主意,其中部分键是可以随时间变化的外键。

【讨论】:

  • 我知道你说的是对的。老师可以有他的唯一键,这可以是表的主键,但我想知道是否可以使用表设置和自动编号来使一个自动编号列适用于其他列的不同值。如果我不使用自动编号,那么我将不得不自己为它输入值。我是使用 SQL 查询完成的,没有自动编号,我首先找到特定学校的teacherID 的最大值,然后插入带有teacherID+1 的新行,但这不是我想要解决的方法。我的问题是,是否可以不使用 SQL,只使用自动编号。
  • @DraganPeric:你的问题的答案是否定的。
  • 真可惜。 :P 谢谢@Andre
【解决方案2】:

你说的是:Something like (teacherID,schoolID(FK),teacherName) where first two are primary key and first one is autonumber

听起来你的老师和学校之间是多对多的关系。这很正常。您使用 3 个表来完成此操作 - 教师表、学校表和连接表。让我们称之为教师学校。它将包含其他 2 个表的外键,以及您要存储的任何其他内容(isActive、dateCreated 等)。它的主键是两个外键加上你需要使它唯一的其他任何东西。

要将记录输入到teacherSchool 表中,您必须向插入查询传递必要的值。这将被纳入您用于数据输入的任何内容中。事实上,即使使用您当前的设计,您也需要一些可以让您的数据输入人员识别学校的东西。无论是什么都应该将 schoolID 传递给您的插入查询。

【讨论】:

    猜你喜欢
    • 2020-07-23
    • 1970-01-01
    • 2015-10-05
    • 2019-01-16
    • 2012-02-08
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    相关资源
    最近更新 更多