有两个表
第一个表有 商号 库号 入库数量 入库时间
第二个表有 商号 库号 库存数量
就是第一个表添加数据 触发第二个表的更新插入(看第二个表中商号 库号相同的话 库存数量更新
要不然 就插入)
1:分析
第一个表入库明细表,第二个表库存盘点表,主要功能就是想每做一次入库,然后采用触发器方式盘点汇总库存数量。
2:创建2张表,一个触发器。
如下所示
```sql
CREATE TABLE `stocklist` (
`Id` char(36) NOT NULL,
`CustomerNO` char(36) NOT NULL,
`StockNO` char(36) NOT NULL,
`Qty` int NOT NULL,
`StockInTime` datetime NOT NULL ,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `stock` (
`Id` char(36) NOT NULL,
`CustomerNO` char(36) NOT NULL,
`StockNO` char(36) NOT NULL,
`Qty` int NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TRIGGER Stock4Triggers AFTER INSERT ON stocklist FOR EACH ROW
begin
delete from stock where CustomerNO=new.CustomerNO and StockNO=new.StockNO;
insert into stock (Id,CustomerNO,StockNO,Qty)
select uuid(),new.CustomerNO,new.StockNO,sum(Qty) as Qty from stocklist where CustomerNO=new.CustomerNO and StockNO=new.StockNO;
END
```
3:触发器逻辑说明,
①删除当前商号对应库号的库存,
②再根据条件重新做汇总计算。
4:另外一种实现方法,如果没有数据就插入,有数据就更新,此方法容易出现幂等性的问题。建议采用上面的先删除再汇总,每次计算都是正确的。