【问题标题】:Updating a MS-Access datatable without primary key in vb.net在 vb.net 中更新没有主键的 MS-Access 数据表
【发布时间】:2013-12-10 10:56:44
【问题描述】:

我已经建立了一个数据表,其中包含员工、他们的部门、部门的入职日期和离职日期。每位员工可以下属多个部门。因此我不能有主键。那么我该如何为此编写更新查询。我正在使用 DataGridView 来更新表格。请帮忙。

【问题讨论】:

  • 为什么这意味着“因此我不能有主键”?

标签: sql vb.net ms-access datagridview


【解决方案1】:

主键的唯一目的是区分一行。就是这样。你真的应该有一个PK。您甚至不必向用户显示它。它可以是像Row_Id 这样的通用名称。 PK 的重点是数据库将其用作每一行的唯一标识符,因此最好只使用自增整数。

如果您没有主键,那么您至少需要某种唯一约束来区分一行和下一行。否则,您无法可靠地 SELECTUPDATE 给定行。

【讨论】:

    【解决方案2】:

    我强烈建议您添加 Employee_Id 主键,因为它很容易使用 Id(唯一)进行更新。您不能更新姓名、部门等。 您可以通过以下方式设置表的主键:

    Dim table As New DataTable()
    table.Columns.Add(New DataColumn("Employee_Id"))
    Dim primaryKey(1) As DataColumn
    primaryKey(1) = table.Columns("Employee_Id")
    table.PrimaryKey = primaryKey
    

    并使用此Employee_Id进行更新

    【讨论】:

    • 问题是因为一个员工可以在多个部门,在这个特定的表中,即使employee_ID 也不会是唯一的。
    • 如果是这样,请使用foreign keyprimary key 的两个表
    【解决方案3】:

    您需要在这里有多个表。一张表只包含员工信息,一张表包含部门信息,一张表包含employeeID、departmentID 和加入/退出日期。一个表是不够的。

    在担心如何更新之前修复您的数据库结构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多