REPLACE INTO TDCS_BOX_SHIPMENT_LAND_20
(
SHIPMENT_NO,
SHIPMENT_ITEM,
SHOULD_BOX_CODE,
SWEPT_BOX_CODE,VOLUME_UNIT,
LOAD_SITE,
UNLOAD_SITE,
UNLOAD_FUNCTION,
CREATE_DATE,
UPDATE_DATE
)
VALUES(。。。。。。。。。。。。。。。。。。。。
这个是我执行的SQL 当我发现数据有一定概率情况下没有插入于是我找到binlog 执行SQL 日志结果发现那概率的情况下执行了UPADTE
### UPDATE TDCS_BOX_SHIPMENT_LAND_20
### WHERE
### @1=7023601
### @2='AA03372140'
### @3='LS43'
### @4='02'
### @5='669467749343'
### @6=''
### @7=''
### @8='01'
### @9=NULL
### @10='KT01060999'
### @11='KT01060999'
### @12=''
### @13=''
### @14=''
### @15=''
最终我发现其实 replace into 跟表的主键类型primary “或” 唯一索引键Enique 进行判断,什么意思呢?意思就是如果当你插入的数据主键在表里唯一或者唯一索引键的值是唯一那么就是插入,否则肯定会被更新了,
哦原来是这样啊~~~
本身我存的数据主键是唯一的,但是唯一索引键不能保证唯一,因为是或者关系导致replace into 跟据唯一索引建去判断了数据是否存在进行了更新。