现象:
用户新建商品,上传后发现有50%的itm_price数据空,除了modidate等。
原因:
修改了samsara的脚本的sql:
SQL = SELECT * FROM ( ( ITM_PRICE INNER JOIN USR_BOX AS USR_BOX_OUT ON ITM_PRICE.USRBOXCODE = USR_BOX_OUT.USRBOXCODE ) INNER JOIN USR_BOX AS USR_BOX_IN ON USR_BOX_OUT.SHOPCODE = USR_BOX_IN.SHOPCODE ) WHERE ITM_PRICE.ITEMCODE = :ITEMCODE AND USR_BOX_IN.USRBOXCODE = :USRBOXCODE,
此时查询出来的column不是itm_price的,因此在samsara层里面添加到pool的时候会过滤掉,接下来的exchange操作就对新数据操作,导致了itm_price里面包含了空数据
解决方案:
SQL = SELECT ITM_PRICE.* FROM ( ( ITM_PRICE INNER JOIN USR_BOX AS USR_BOX_OUT ON ITM_PRICE.USRBOXCODE = USR_BOX_OUT.USRBOXCODE ) INNER JOIN USR_BOX AS USR_BOX_IN ON USR_BOX_OUT.SHOPCODE = USR_BOX_IN.SHOPCODE ) WHERE ITM_PRICE.ITEMCODE = :ITEMCODE AND USR_BOX_IN.USRBOXCODE = :USRBOXCODE,
再发现问题:
现象仍然没有解决,再次debug,发现采用了join的sql,得到的table是没有表名的,导致添加到pool的时候再次出错,只能修改samsara的代码,强迫设置table.TableName
再发现问题080929:
输入的商品只有一个,但是用户有10个格子,因此itm_price对应同一个shop有10个记录
由于script里面是想修改同门店的所有itm_price,而输入商品只有1条,因此在samsara里面就出现了流的不匹配现象。
修改:商品到货的调价只能在usrbox有效,不能在shop有效