【问题标题】:preventing duplicate entries with INSERT IGNORE使用 INSERT IGNORE 防止重复条目
【发布时间】:2013-03-06 02:40:22
【问题描述】:

使用以下内容,CHECKINDATEENTERED 将始终不同,但 VENUECREATEDAT 将始终相同。

我想知道是否可以通过仅检查表createdAt 中的一列来防止重复条目。

SQL = "INSERT IGNORE INTO CHECKINS (CHECKINPLATFORM, MEMBERID, VENUENAME, VENUELAT, VENUELNG, VENUECITY, VENUECOUNTRY, VENUECREATEDAT, CHECKINDATEENTERED) VALUES ('"& strFoursquare &"', '"& objMembers("MEMBERID") &"', '"& strVenueName &"', '"& strlat &"', '"& strlng &"', '"& strCity &"', '"& strCountry &"', '"& FormatDateMySQL(strcreatedAt) &"', '"& FormatDateMySQL(NOW) &"')"

【问题讨论】:

标签: mysql sql insert sql-insert


【解决方案1】:

如果您有UNIQUE INDEX,那么与此键冲突的条目将被忽略。您需要通过在与其唯一身份相关的特定列上创建索引来建立您的“重复”条件。

【讨论】:

  • 有一个ID列是主键。你参考了吗?
  • PRIMARY KEY 列显然是唯一的,但您没有插入它,是吗?
  • 自动递增。啊,你上面写的对我来说就像是另一种语言。您能否解释一下“您需要通过在与其唯一身份相关的特定列上创建索引来建立您的“重复”条件。”举个例子
  • 一个更具体的例子是一个用户数据库,其中username 必须是唯一的,或者一个餐厅预订,其中索引将在user_id, restaurant_id, date 上,限制人们每天每个餐厅只能预订一次。您需要确定在您的案例中定义“唯一性”的最小列集。
  • Tadman,我正在做的是让人们在 CHECKINS 表中插入他们的入住日期。所以一个人会有很多签到但不同的 CreatedAt 日期。如果他将使用现有的 CreatedAt 日期提交另一个签到,我不希望它重新插入。我怎样才能按照你解释我的方式设置它
猜你喜欢
  • 2012-05-21
  • 1970-01-01
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
  • 2015-11-29
  • 2015-07-30
  • 2012-10-14
  • 1970-01-01
相关资源
最近更新 更多