【问题标题】:MySQL insert if not exists/ignoreMySQL 插入,如果不存在/忽略
【发布时间】:2012-06-09 17:43:17
【问题描述】:

所以基本上这是我的表格布局:

Type_Of     Agreement
iPad        Heyo! I'm an agreement!
iPod Touch  I'm another agreement!

基本上,我正在构建一个管理员界面,管理员可以在其中添加新类型。我希望它能做到,这样他/她就不能输入已经存在的新类型。基本上,在上面的例子中,如果他们在新类型框中输入“iPad”并按下提交,它将被简单地忽略或抛出错误之类的。

这是我现有的 MySQL 语句:

INSERT IGNORE INTO agreements (Type_Of, Agreement) VALUES (?, ?)
com.Parameters.AddWithValue("", Request.Form["pies"]);
com.Parameters.AddWithValue("", "Wahey! A sample license!");

【问题讨论】:

  • 那么,有什么问题呢?如果INSERT IGNORE 没有达到您的预期,您是否在Type_Of 上定义了UNIQUE 键?
  • 德普。不,我没有。我忘记了那部分。谢谢!

标签: c# mysql insert exists


【解决方案1】:

升级到答案

您需要在Type_Of 上定义一个UNIQUE 索引。如the manual 中所述:

UNIQUE 索引创建一个约束,使得索引中的所有值都必须是不同的。如果您尝试使用与现有行匹配的键值添加新行,则会发生错误。对于所有引擎,UNIQUE 索引允许包含 NULL 的列的多个 NULL 值。如果您为 UNIQUE 索引中的列指定前缀值,则列值在前缀中必须是唯一的。

因此:

ALTER TABLE agreements ADD UNIQUE INDEX (Type_Of);

【讨论】:

    猜你喜欢
    • 2012-03-28
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    相关资源
    最近更新 更多