ON DUPLICATE UPDATE不适用于某些行

时间:2015-11-30 03:25:59

标签: php mysql

我在查询中使用ON DUPLICATE UPDATE,一些结果没有存储它。我尝试了所有可能的方式,但那些仍然保持不变。这是数据库图片。

enter image description here

那些NULL,是没有成功存储的行;结果应为1而不是NULL。

    if($remark){
$query3 = "INSERT INTO `audit_section_remarkrecord` SET remark = '$remark', form_details_subquestion_id = '$form_details_subquestion_id', form_details_section_id = '$form_details_section_id', audit_section_no = '$audit_no' ON DUPLICATE KEY UPDATE
form_details_section_id = '$form_details_section_id' , remark = '$remark'";
$result3 = $db->query($query3); 

$query4 = "UPDATE `remarkrecord_update_details` SET form_details_section_id = '$form_details_section_id', userlog = '$user_staff', ipaddress = '$ip' WHERE form_details_subquestion_id = '$form_details_subquestion_id' AND audit_section_no = '$audit_no' ";
$result4 = $db->query($query4); 
}else{
}

}

表格结构

enter image description here

1 个答案:

答案 0 :(得分:2)

尝试将您要插入值的一个列更改为主键,或者将UNIQUE约束添加到列中。

ALTER TABLE audit_section_remarkrecord ADD UNIQUE KEY (your column);

由于主键上目前只有一个唯一键,一个自动增量,您将难以在insert on duplicate key update (IODKU).上生成唯一的键冲突。因此,需要创建一些其他唯一键(甚至是复合词),它会触发唯一键的冲突并允许IODKU按预期工作。