讨论一下数据库中的临时表(非数据库自带功能临时表)
之前公司做ERP软件的。
在软件中只要涉及到流程性的操作,所涉及的表都要再加临时表。
何为临时表?比如说表T_User,那么临时表就是T_Temp_User。表结构直接复制过来,把一切约束去除,并且添加操作员和操作时间字段。
在进行某个流程操作,比如说修改(添加)样品单,系统并不直接操作真实表,而是从数据库中将真实表的数据copy到临时表,操作临时表得数据,操作完成再更新到真实表当中。
疑问:
之前不理解为什么要这样做,老大说带宽问题,不规范的小厂网络有时候提供给ERP软件用的带宽会低到5K以下,如果一个业务逻辑20-30张表的内容全部传到软件中会有带宽不足的问题。我觉得带宽也不是大问题吧,因为如果用延迟加载的话跟临时表是一样的带宽流量。
每张真实表对应一张临时表,带来维护上的问题,真实表修改添加的字段,临时表都要加,有时候会变得不容易维护。
从临时表更新到真实表其实是非常繁琐的,更新流程如下: (1)从真实表里面删除临时表里面被删除的记录 (2)更新临时表里面被更新的记录 (3)添加临时表里面新添加的记录。
里面细节还很多,这些都是用存储过程来完成,存储过程也写得特别长。由于有临时表,原本很多应该在本地完成的逻辑,也放到存储过程里面来执行,大家都知道存储过程比较不那么直观,不容易理解,而且由于逻辑分离,导致开发上的一些困难。
你们公司做开发用临时表吗?用存储过程来写业务逻辑吗?