使用关系更改访问主键

时间:2010-03-30 15:20:24

标签: database ms-access database-design primary-key ms-access-2007

我在access 2007 accdb扩展中有一个数据库,或多或少有30-40个表与相关的主键“local_number”。它是一个文本主键,长度为10。

如何将此主键的长度更改为30而不删除所有30个关系。

  1. 一个类似的问题。 我需要在我的PK“local_number”中添加一个compose主键。我需要添加一个“日期”作为组合PK。 如果我先删除所有关系,那么访问只允许这个。
  2. 如何避免此警告并更改我的PK忽略此消息。

    每个表中撰写PK的原因是记录中历史数据更改的要求。

    更新,有人知道这是否可行,或者我想删除所有关系?

2 个答案:

答案 0 :(得分:1)

您可以使用自动访问数据库对象模型和VBA代码

  1. 在相应的表格中添加新字段(包括PK和FK)
  2. 根据已存在的关系,使用相应的PK值更新所有FK值
  3. 打破现有关系
  4. 创建新关系
  5. 要知道必须替换哪些关系,您可以浏览数据库对象。

    此代码可以激发您的灵感(即时编写/可能有错误/检查相应的帮助):

    for i = 0 to mydatabase.Relations.count - 1
        Debug.Print mydatabase.relations(i).name
        for j = 0 to myDatabase.relations(i).fields.count -1
            debug.print myDatabase.relations(i).fields(j).name
        next j
    next i
    

答案 1 :(得分:1)

  1. 使用现有关系制作数据库副本。

  2. 删除原始副本中的所有关系。

  3. 然后使用备份中的code to copy the relationships到原始副本。

  4. 我假设您为正在编辑的PK字段保留了相同的名称,但即使如此,您也可以在引用的URL中更改MS知识库中的代码以解释该问题。