mysql触发器问题

有两个表
第一个表有 商号 库号 入库数量 入库时间
第二个表有 商号 库号 库存数量
就是第一个表添加数据 触发第二个表的更新插入(看第二个表中商号 库号相同的话 库存数量更新
要不然 就插入)

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:另外一种实现方法,如果没有数据就插入,有数据就更新,此方法容易出现幂等性的问题。建议采用上面的先删除再汇总,每次计算都是正确的。