现在做一进销存系统。
涉及到订单的修改..订单主表:
id,order_id,order_date,quantity..。订单明细表:
material_id,order_id,material_name,material_type,material_qty...如上两表大致的基本结构.我目前对主表和明细表同时更新呢采用事务处理机制.但假如一个订单中包含三个物料明细,修改该订单,使其只有2个物料明细,并且其中一个物料的明细数量也进行修改..这样一来,对该订单的更新就很麻烦,似乎很不好处理。
主表还好说,直接update,但对应的明细更新如何处理呢(同时涉及到明细表的修改,删除,添加)...以前没做个这个,感觉很麻烦,希望做过进销存的兄弟伙给个意见
大家如何处理的??
涉及到订单的修改..订单主表:
id,order_id,order_date,quantity..。订单明细表:
material_id,order_id,material_name,material_type,material_qty...如上两表大致的基本结构.我目前对主表和明细表同时更新呢采用事务处理机制.但假如一个订单中包含三个物料明细,修改该订单,使其只有2个物料明细,并且其中一个物料的明细数量也进行修改..这样一来,对该订单的更新就很麻烦,似乎很不好处理。
主表还好说,直接update,但对应的明细更新如何处理呢(同时涉及到明细表的修改,删除,添加)...以前没做个这个,感觉很麻烦,希望做过进销存的兄弟伙给个意见
大家如何处理的??
解决方案 »
- delphi通过以太网与PLC通信用什么控件,怎么设置?
- 关于ACCESS中删除表temp,为何有时行,有时又出错说找不到该表
- D7中没有NMurl,怎么编码呢?
- 请问大侠何处有delphi的电子书下载
- if 某条件成立,报表中增加显示某些字段信息,怎样才能做到在原有报表基础上再增加显示某些信息呢?
- 请教了!
- 我的common control选项页不见了,怎么找回来?
- ______在执行完“恢复数据库”的语句后,再执行SQL查询语句___提示“连接失败”
- 请问在win2000中如何屏蔽ALT+F4等系统键啊?
- 新手请问:关于delphi的qbexpr控件的Expression值
- VC、VB、delphi、汇编菜鸟的求助!请大虾们指点!
- 谁有关于bpl开发的简单教程呀
或者在子表中建触发器更新主表但事务还是一定要用的
例如从表中有三条记录
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这个可以使用事务+触发器全部完成么?又是删除,又是修改,又是 添加的?汗一个先,呵呵..
你的主表与从表都是通过order_id这个字段关联的
可以把从表中做个视图:select order_id,sum(material_qty) from 从表 group by order_id;
然后主表与这个视图就可以取出来总数量了
2.利用触发器
你把触发器建在从表中,当数据发生变化时,去更新主表中的这个数量字段利用事务时,触发器也是事务的一个部分,出错了,事务也会失败的,这个不用担心。