我有一个表材料组,其中存储有关默认材料组的信息。 例:
> MaterialGroup
> - ID
> - MaterialGroup_Name
> - MaterialGroup_Price
但是,存在一个问题:材料组属性可以按公司更改。为此,我创建了表格:
MaterialGroup_Company
- ID
- MaterialGroup_Default_ID
- CompanyID
- MaterialGroup_Company_Name
- MaterialGroup_Company_Price
例:
材料组默认值:
名称:组 1
价格: 40.00
公司A:材料组名称:组1
材料组价格: 40.00
B公司:
材料组:组 1(扩展(
材料组价格: 100.00
在我的代码后端,我有类MaterialGroup。
我真正的问题如下:
我有一个表单,用户可以在其中更改默认的材料组。我已经有了主表的更新语句,但我正在努力寻找更新MaterialGroup_Company的方法。我想做的是只更新与主行具有完全相同值的子行值。
这意味着在我的示例中,如果我将材料组名称更改为组 1 - 默认值,公司 A 应该更新,但公司 B 需要保持不变。
如何实现这种更新?请记住,我的实际表有更多的列。
作为一般规则,应尽量避免在数据库中存储重复的信息。如果您必须在两个不同的位置存储相同的信息,这通常意味着您的方法可以改进。此外,它可能会导致诸如两行不同步等问题。
当公司决定覆盖默认的 MaterialGroup 时,仅在MaterialGroup_Company中创建一行怎么样? 逻辑是: - 如果MaterialGroup_Company中有一行,请使用该行 - 否则,请使用默认中的那个。
如果使用左联接并处理代码中的其余部分,则可以在单个 SQL 查询中执行此操作。如果MaterialGroup_Company中没有关联的行,则列应为 null,您可以查看MaterialGroup_Default列。