是否可以插入行,但仅当值尚不存在时?
是否可以插入一行,但仅当表中已有的值之一不存在时?
我正在为电子商务系统创建一个带有推荐点的“告诉朋友”,我需要将朋友的电子邮件插入数据库表中,但前提是表中尚不存在。这是因为一旦新客户注册并购买某些东西,我不希望超过1人获得推荐积分。因此,我只想在表格中收到一封电子邮件。
我使用的是 PHP 4 和 MySql 4.1。
是否可以插入一行,但仅当表中已有的值之一不存在时?
我正在为电子商务系统创建一个带有推荐点的“告诉朋友”,我需要将朋友的电子邮件插入数据库表中,但前提是表中尚不存在。这是因为一旦新客户注册并购买某些东西,我不希望超过1人获得推荐积分。因此,我只想在表格中收到一封电子邮件。
我使用的是 PHP 4 和 MySql 4.1。
如果列上有唯一的索引或主键(在本例中为 EmailAddr),则此方法有效:
INSERT IGNORE INTO Table (EmailAddr) VALUES ('test@test.com')
如果包含该电子邮件的记录已存在(重复键冲突)而不是错误,则使用此选项,该语句将失败,并且不会插入任何内容。
有关详细信息,请参阅 MySql 文档。
如果该列是主键或唯一索引:
INSERT INTO table (email) VALUES (email_address) ON DUPLICATE KEY UPDATE
email=email_address
知道我的运气,有更好的方法可以做到这一点。AFAIK在MySQL中没有等同于“ON DUPLICATE KEY DO NOTHING”。我不确定email=email_Address位,你可以玩,看看它是否有效,而不必指定一个动作。正如上面有人所说,如果它有独特的限制,无论如何都不会发生任何事情。而且,如果您希望表中的所有电子邮件地址都是唯一的,则没有理由在列定义中将其指定为唯一。