关于主表明细表更新修改的问题,大家是 如何操作的

时间:2022-07-11 21:40:18
现在做一进销存系统。
涉及到订单的修改..

订单主表:
id,order_id,order_date,quantity..。

订单明细表:
material_id,order_id,material_name,material_type,material_qty...

如上两表大致的基本结构.

我目前对主表和明细表同时更新呢采用事务处理机制.

但假如一个订单中包含三个物料明细,修改该订单,使其只有2个物料明细,并且其中一个物料的明细数量也进行修改..

这样一来,对该订单的更新就很麻烦,似乎很不好处理。
主表还好说,直接update,但对应的明细更新如何处理呢(同时涉及到明细表的修改,删除,添加)...

以前没做个这个,感觉很麻烦,希望做过进销存的兄弟伙给个意见
大家如何处理的??

5 个解决方案

#1


1.一起用事务

2.主表用update,明细表接着用 update 明细表....where order_id=主表.order_id,不就行了吗?

#2


看你的表结构中,主表中有一个quantity,这个字段是否可以去掉直接关联从表就行了
或者在子表中建触发器更新主表

但事务还是一定要用的

#3


1、事务是肯定要用的。
2、可以选择用触发器,更新从表的时候自动修改主表的信息。
3、对于主表显示的数量,是动态从从表中计算出来的,主表中不保存这个值。

#4


引用 2 楼 AudiQ7 的回复:
看你的表结构中,主表中有一个quantity,这个字段是否可以去掉直接关联从表就行了 
或者在子表中建触发器更新主表
但事务还是一定要用的
 
hey ,阿日.
我这个字段是保存从表中所有物料数量总和。
关联的话,查询时候使用SQL统计函数统计结果是吧?


引用 3 楼 AudiQ7 的回复:
1、事务是肯定要用的。 
2、可以选择用触发器,更新从表的时候自动修改主表的信息。 
3、对于主表显示的数量,是动态从从表中计算出来的,主表中不保存这个值。


例如从表中有三条记录
JH20080001,CH20120021,物料A,类型A,30
JH20080001,CH20120018,物料B,类型A,20
JH20080001,CH20120045,物料C,类型C,50


如上是订单JH20080001中的三个物料明细记录.
更新该订单,将CH20120045物料删除,CH20120021物料数量改为20.
同时新增一个物料CH20120034到该订单中,最后的结果是:

JH20080001,CH20120021,物料A,类型A,20
JH20080001,CH20120018,物料B,类型A,20
JH20080001,CH20120034,物料C,类型C,15


这个可以使用事务+触发器全部完成么?又是删除,又是修改,又是 添加的?

汗一个先,呵呵..


#5


1 对于关联查询:
你的主表与从表都是通过order_id这个字段关联的
可以把从表中做个视图:select order_id,sum(material_qty) from 从表 group by order_id;
然后主表与这个视图就可以取出来总数量了
2.利用触发器
 你把触发器建在从表中,当数据发生变化时,去更新主表中的这个数量字段

利用事务时,触发器也是事务的一个部分,出错了,事务也会失败的,这个不用担心。

#1


1.一起用事务

2.主表用update,明细表接着用 update 明细表....where order_id=主表.order_id,不就行了吗?

#2


看你的表结构中,主表中有一个quantity,这个字段是否可以去掉直接关联从表就行了
或者在子表中建触发器更新主表

但事务还是一定要用的

#3


1、事务是肯定要用的。
2、可以选择用触发器,更新从表的时候自动修改主表的信息。
3、对于主表显示的数量,是动态从从表中计算出来的,主表中不保存这个值。

#4


引用 2 楼 AudiQ7 的回复:
看你的表结构中,主表中有一个quantity,这个字段是否可以去掉直接关联从表就行了 
或者在子表中建触发器更新主表
但事务还是一定要用的
 
hey ,阿日.
我这个字段是保存从表中所有物料数量总和。
关联的话,查询时候使用SQL统计函数统计结果是吧?


引用 3 楼 AudiQ7 的回复:
1、事务是肯定要用的。 
2、可以选择用触发器,更新从表的时候自动修改主表的信息。 
3、对于主表显示的数量,是动态从从表中计算出来的,主表中不保存这个值。


例如从表中有三条记录
JH20080001,CH20120021,物料A,类型A,30
JH20080001,CH20120018,物料B,类型A,20
JH20080001,CH20120045,物料C,类型C,50


如上是订单JH20080001中的三个物料明细记录.
更新该订单,将CH20120045物料删除,CH20120021物料数量改为20.
同时新增一个物料CH20120034到该订单中,最后的结果是:

JH20080001,CH20120021,物料A,类型A,20
JH20080001,CH20120018,物料B,类型A,20
JH20080001,CH20120034,物料C,类型C,15


这个可以使用事务+触发器全部完成么?又是删除,又是修改,又是 添加的?

汗一个先,呵呵..


#5


1 对于关联查询:
你的主表与从表都是通过order_id这个字段关联的
可以把从表中做个视图:select order_id,sum(material_qty) from 从表 group by order_id;
然后主表与这个视图就可以取出来总数量了
2.利用触发器
 你把触发器建在从表中,当数据发生变化时,去更新主表中的这个数量字段

利用事务时,触发器也是事务的一个部分,出错了,事务也会失败的,这个不用担心。