首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否可以在值不存在的情况下插入行?

是否可以在值不存在的情况下插入行?
EN

Stack Overflow用户
提问于 2008-11-13 00:38:39
回答 5查看 23.6K关注 0票数 16

是否可以插入一行,但前提是表中已有一个值不存在?

我正在为一个电子商务系统创建一个带推荐点的Tell A Friend,在这个系统中,我需要将朋友的电子邮件插入到数据库表中,但前提是它不存在于表中。这是因为我不希望任何超过1人获得推荐积分,一旦新客户签约和购买的东西。因此,我希望只有一个电子邮件在表中一次。

我使用的是PHP4和MySql 4.1。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-11-13 00:47:20

如果列是主键或唯一索引:

INSERT INTO table (email) VALUES (email_address) ON DUPLICATE KEY UPDATE
email=email_address

知道我的运气,还有一种更好的方法。AFAIK在MySQL中没有“复制密钥时什么都不做”的等价物。我不确定email=email_Address位,你可以尝试一下,看看它是否工作,而不需要指定一个动作。正如上面有人说的那样,如果它对它有独特的约束,那么无论如何都不会发生任何事情。如果您希望表中的所有电子邮件地址都是唯一的,那么就没有理由在列定义中将其指定为唯一的。

票数 21
EN

Stack Overflow用户

发布于 2008-11-13 00:58:59

如果列上有唯一索引或主键(本例中为EmailAddr),则此方法有效:

INSERT IGNORE INTO Table (EmailAddr) VALUES ('test@test.com')

如果带有该电子邮件的记录已经存在(重复的键冲突)而不是错误,则使用此方法,语句将失败,并且不会插入任何内容。

有关详细信息,请参阅MySql docs

票数 33
EN

Stack Overflow用户

发布于 2008-11-13 00:52:23

最有可能的情况是:

IF NOT EXISTS(SELECT * FROM myTable WHERE Email=@Email) THEN INSERT INTO blah blah

可以合并到一个数据库查询中。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/285937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档