我正在尝试使用insert ignore语句将名称放在数据库中。我不想创建重复项,但是,我使用的insert ignore语句一直在插入!
陈述是:
INSERT IGNORE INTO firstname(name) VALUES ('Tommy')
我的数据库显示了这个:
id | name
-------------
1 Tommy
2 Tommy
3 Tommy
一些帮助我的人的信息。我的id是我的主键,它是自动递增的。
我的猜测是因为新的id是自动创建的,所以它认为它是一个新的结果!我不知道如何用更大的SQL查询来检查这个expcept,检查Tommy名称是否存在
由于
答案 0 :(得分:5)
这是因为name
表格中的firstname
列是not unique
。尝试使用此DDL语句添加unique
约束,
ALTER TABLE firstname ADD UNIQUE (name);
然后尝试它是否仍然添加重复的名称。希望它现在有效:)
答案 1 :(得分:0)
您是否尝试在“名称”列上设置“唯一键”约束?
答案 2 :(得分:0)
鉴于您的架构,使用IGNORE没有任何区别。 IGNORE用于忽略插入期间引发的潜在错误。
要避免名称列中出现重复项,请在该列上添加UNIQUE约束,并从INSERT语句中删除IGNORE关键字。如果继续使用IGNORE,UNIQUE约束将导致错误但它将被忽略,这意味着实际上将忽略UNIQUE约束。