C#SQL - 更新与父表具有相同值的子表

时间:2018-05-09 21:43:29

标签: c# sql oop compare object-oriented-database

我有一个table materialGroup,其中存储有关默认材质组的信息。 例如:

> MaterialGroup
>  - ID 
>  - MaterialGroup_Name 
>  - MaterialGroup_Price

然而,存在一个问题:MaterialGroup属性可以根据公司进行更改。为此,我创建了表格:

MaterialGroup_Company
 - ID
 - MaterialGroup_Default_ID
 - CompanyID
 - MaterialGroup_Company_Name
 - MaterialGroup_Company_Price

示例:

MaterialGroup默认

姓名:第1组

价格:40.00

公司A: 材料组名称:第1组

材料组价格:40.00

公司B:

材料组:第1组(扩展)

材料组价格:100.00

在我的代码的后端,我有类MaterialGroup。

我的真正问题如下:

我有一个表单,用户可以在其中更改默认的MaterialGroup。我已经拥有主表的更新语句,但我正在努力寻找更新MaterialGroup_Company的方法。我想要做的只是更新与master具有完全相同值的子行值。

这意味着在我的示例中,如果我将MaterialGroup名称更改为第1组 - 默认情况下,公司A应该更新,但公司B需要保持不变。

如何实现这种更新?请记住,我的真实表有更多列。

1 个答案:

答案 0 :(得分:1)

作为一般规则,您应该尽量避免在数据库中存储重复信息。如果您必须在两个不同的位置存储相同的信息,通常意味着您的方法可以改进。此外,它可能会导致诸如你的两行不同步之类的问题。

当公司决定覆盖默认的MaterialGroup时,如何仅在MaterialGroup_Company中创建一行? 逻辑是: - 如果MaterialGroup_Company中有一行,请使用该行 - 否则,请使用默认值中的那个。

如果您使用左连接并处理代码中的其余部分,则可以在单个SQL查询中执行此操作。如果MaterialGroup_Company中没有关联的行,则列应为null,您可以查看MaterialGroup_Default列。