【发布时间】:2013-12-10 10:56:44
【问题描述】:
我已经建立了一个数据表,其中包含员工、他们的部门、部门的入职日期和离职日期。每位员工可以下属多个部门。因此我不能有主键。那么我该如何为此编写更新查询。我正在使用 DataGridView 来更新表格。请帮忙。
【问题讨论】:
-
为什么这意味着“因此我不能有主键”?
标签: sql vb.net ms-access datagridview
我已经建立了一个数据表,其中包含员工、他们的部门、部门的入职日期和离职日期。每位员工可以下属多个部门。因此我不能有主键。那么我该如何为此编写更新查询。我正在使用 DataGridView 来更新表格。请帮忙。
【问题讨论】:
标签: sql vb.net ms-access datagridview
主键的唯一目的是区分一行。就是这样。你真的应该有一个PK。您甚至不必向用户显示它。它可以是像Row_Id 这样的通用名称。 PK 的重点是数据库将其用作每一行的唯一标识符,因此最好只使用自增整数。
如果您没有主键,那么您至少需要某种唯一约束来区分一行和下一行。否则,您无法可靠地 SELECT 或 UPDATE 给定行。
【讨论】:
我强烈建议您添加 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进行更新
【讨论】:
foreign key 和primary key 的两个表
您需要在这里有多个表。一张表只包含员工信息,一张表包含部门信息,一张表包含employeeID、departmentID 和加入/退出日期。一个表是不够的。
在担心如何更新之前修复您的数据库结构。
【讨论】: