当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-