我尝试INSERT IF NOT EXISTS
所以我搜索了这个,我找到了:How to 'insert if not exists' in MySQL?
所以我尝试使用IGNORE
,这是我的表:
CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255),
`mail` VARCHAR(255),
PRIMARY KEY (`id`)
) CHARACTER SET utf8 COLLATE utf8_general_ci;
这是我的疑问:
INSERT IGNORE INTO `users` SET `mail` = ?, `name` = ?
但它的插入即使存在 所以我搜索了那个,我找到了:mySQL INSERT IGNORE doesn't "ignore"
我在那里读到只有PRIMARY KEY它的剂量插入重复
所以你可以在我的表格中看到我有PRIMARY KEY
如果问题是我需要在我的查询中插入id字段它的问题,因为我不知道当我进行查询时它是什么
那么如何在不创建重复项的情况下将信息插入到数据库中呢?
答案 0 :(得分:1)
插入忽略仅在您尝试将值插入主键(id)列时起作用,但您没有包含id。另一方面,你甚至不需要它。你说得对。当你插入一个新用户时,它会获得下一个可用的用户,因为它是auto_increment。
也许您想要将电子邮件字段设为uniq,因此两个用户不能拥有相同的电子邮件。在这种情况下,如果您使用了表中已有的电子邮件,则插入忽略将忽略添加新行。
答案 1 :(得分:0)
您必须先使用您要插入的信息进行选择,如果结果中包含一行或多行,则不要插入。
例如,运行查询SELECT count(*) from users where mail = ? and name = ?
然后检查返回的结果对象,并根据它插入或跳过。
答案 2 :(得分:0)
INSERT IGNORE仅在违反某些密钥时跳过记录。在您的案例中创建一个唯一的密钥:
CREATE UNIQUE INDEX uniq_users ON users (name, mail);