当MySQL插入时,检查表中的两个字段不重复

当MySQL插入时,检查表中的两个字段不重复,mysql,Mysql,我有以下表格: table (id, longitude, latitude, longlat, address, description, kind, synonym, primary key(id) ); 我需要检查插入行中的longlat和description字段是否唯一,并

我有以下表格:

     table (id,
            longitude,
            latitude,
            longlat,
            address,
            description,
            kind,
            synonym,
            primary key(id)
      );
我需要检查插入行中的
longlat
description
字段是否唯一,并且没有
longlat
description
的组合相同的行插入表中

我应该如何修改我的查询

      "INSERT INTO yandex_social_objects (longitude,latitude,longlat,address,description,kind,synonym) VALUES (val_1),(val_2),(val_3)...(val_n)"

在组合上添加一个
UNIQUE
约束,这样就不会发生这种情况:

ALTER TABLE yandex_social_objects
  ADD CONSTRAINT longlat_description_UQ
    UNIQUE (longlat, description) ;
在此之后,所有插入到表中的内容都将检查此组合的唯一性,并检查是否成功


您可以使用
INSERT IGNORE
INSERT。。。在重复密钥更新时…
了解唯一密钥冲突的不同行为。检查此答案是否存在差异:

在组合上添加一个
唯一的
约束,这样就不会发生这种情况:

ALTER TABLE yandex_social_objects
  ADD CONSTRAINT longlat_description_UQ
    UNIQUE (longlat, description) ;
在此之后,所有插入到表中的内容都将检查此组合的唯一性,并检查是否成功


您可以使用
INSERT IGNORE
INSERT。。。在重复密钥更新时…
了解唯一密钥冲突的不同行为。检查此答案是否存在差异:

可能最简单的方法是在表中的这些字段上添加一个唯一的键。是的,创建longlat和Description的唯一组合,但是如果我尝试插入另一行,其中
longlat
将重复,而
说明
-不会?是否插入此行?可能最简单的方法是在表中的这些字段上添加一个唯一的键。是的,创建longlat和Description的唯一组合,但如果我尝试插入另一行,其中的
longlat
将重复,而
说明
-不重复,该怎么办?是否插入此行?我有一个错误
指定的键太长;查询的最大密钥长度为767字节
。我做错了什么?哦,我想
描述
长的
太长了。数据类型是什么?
longlat
是varcar(128)和
description
是varchar(256),表是否使用InnoDB或MyISAM引擎?您可以使用INSERT IGNORE-我有一个错误
指定的键太长;查询的最大密钥长度为767字节
。我做错了什么?哦,我想
描述
长的
太长了。数据类型是什么?
longlat
是varcar(128)和
description
是varchar(256),表是否使用InnoDB或MyISAM引擎?您可以使用INSERT IGNORE-