Mysql INSERT IGNORE INTO只忽略一列

时间:2017-11-12 06:13:40

标签: php mysql insert insert-into

我在我的网站上使用了以下sql

$sql = "INSERT IGNORE INTO names VALUES ('akku@gmail.com','19','akku');";

此代码仅在三个值相同时才有效。 。我只有在数据库中不存在第一个值(akku@gmail.com)时才需要将数据插入数据库。否则它应该显示"电子邮件已存在"。即使第二个和第三个值不同,它也应该工作。

2 个答案:

答案 0 :(得分:2)

将电子邮件地址设为表格的主键。不要在声明中使用IGNORE关键字。捕获输入重复电子邮件时出现的错误(尝试将副本插入MySQL将导致前端代码中出现异常)并显示"电子邮件已存在"消息

数据库并不关心你的价值观是什么,所以我并不真正明白你的意思"只有当最后两个是相同的时候它才有效。"除非您有一个触发器,如果​​您尝试为最后两列插入不同的值

,则会引发错误

答案 1 :(得分:1)

您可以先使用SELECT查找数据是否存在,然后插入(如果不存在)或更新(如果存在)。这是最好的方法,因为你可以使用php来处理任何使用它的情况。

第二种方法是制作第一个值主键。这样你的插入就会抛出一个错误,你可以抓住它做你想做的任何事情。

第三种方式,如果您想要更新数据(如果存在)将使用 - INSERT ON DUPLICATE KEY UPDATE https://mariadb.com/kb/en/library/insert-on-duplicate-key-update/