近来遇到一个问题,一个数据保存接口。两处调用,一处在联合主键相同是总是更新数据,一处在联合主键相同时却新增了一条。
排查发现:
- 联合主键多大十几个,且其中有几个字段是没有值的;
- 更新数据的调用方将空值使用''代替;
- 新增数据的调用方空值使用NULL代替;
故得出结论:
- mysql某些版本,某些配置下,联合主键空值过多,会导致ON DUPLICATE KEY UPDATE不更新,与主观看法产生矛盾;
- 不是有NULL值就不更新,具体还要看实际情况;
- 建议在插入时替代NULL值。
近来遇到一个问题,一个数据保存接口。两处调用,一处在联合主键相同是总是更新数据,一处在联合主键相同时却新增了一条。
排查发现:
故得出结论: