如果没有“名称”和“电子邮件”一起存在的条目,我只想插入。
如果“name”存在不同的电子邮件或反之亦然,那就没关系。
mysql_query("INSERT INTO
list (name,email)
VALUES ('$name','$email')
ON DUPLICATE KEY
UPDATE name='$name',email='$email'");
我做了两个名字和电子邮件主键但ON DUPLICATE语句无效。
答案 0 :(得分:1)
如果名称和电子邮件是组合的唯一键,则在数据集已存在的情况下触发更新语句(使用完全相同的值进行覆盖)是没有意义的。在这种情况下,我实际上只会INSERT,然后检查数据库是否响应键约束违规。这是预期的错误,然后被忽略。还有其他任何错误。
我不会通过这个NO-OP更新来解决这个问题。
答案 1 :(得分:0)
您需要一个复合唯一键才能使ON DUPLICATE KEY UPDATE
工作:
CREATE UNIQUE INDEX name_email ON list (name, email);
这就是它调用ON DUPLICATE **KEY** UPDATE