1

我正在尝试使用插入忽略语句将名称放入数据库中。我不想创建重复项,但是,我使用的插入忽略语句不断插入!

声明是:

INSERT IGNORE INTO firstname(name) VALUES ('Tommy')

我的数据库显示了这一点:

id  |  name
-------------
1      Tommy
2      Tommy
3      Tommy

一些帮助我的人的信息。我的 id 是我的主键,它是自动递增的。

我的猜测是,因为新 id 是自动创建的,所以它认为它是一个新结果!我不知道如何通过更大的 SQL 查询来解决这个问题,检查名称 Tommy 是否首先存在

谢谢

4

3 回答 3

5

这是因为表中的namefirstnamenot unique. 尝试unique使用此 DDL 语句添加约束,

ALTER TABLE firstname ADD UNIQUE (name);

然后尝试它是否仍然添加重复的名称。希望它现在有效:)

于 2012-08-11T09:12:57.993 回答
0

您是否尝试在“名称”列上设置“唯一键”约束?

于 2012-08-11T09:14:02.723 回答
0

鉴于您的架构,使用IGNORE没有区别。IGNORE用于忽略插入期间引发的潜在错误。

要避免名称列中的重复,请在该列上添加一个UNIQUE约束并从语句中删除IGNORE关键字。INSERT如果您继续使用IGNORE,该UNIQUE约束将导致错误但将被忽略,这意味着实际上该UNIQUE约束将被忽略。

于 2012-08-11T09:15:39.367 回答