我有一个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需要保持不变。
如何实现这种更新?请记住,我的真实表有更多列。
答案 0 :(得分:1)
作为一般规则,您应该尽量避免在数据库中存储重复信息。如果您必须在两个不同的位置存储相同的信息,通常意味着您的方法可以改进。此外,它可能会导致诸如你的两行不同步之类的问题。
当公司决定覆盖默认的MaterialGroup时,如何仅在MaterialGroup_Company中创建一行? 逻辑是: - 如果MaterialGroup_Company中有一行,请使用该行 - 否则,请使用默认值中的那个。
如果您使用左连接并处理代码中的其余部分,则可以在单个SQL查询中执行此操作。如果MaterialGroup_Company中没有关联的行,则列应为null,您可以查看MaterialGroup_Default列。