如何确保MySQL行是唯一的?

时间:2010-06-26 17:25:54

标签: php mysql

我试图在MySQL表中插入一行,条件是该行本身必须是唯一的。 例如,该行将包含idnameaddress,但我们不能拥有重复名称和地址的插入内容。 我在插入之前尝试做一个选择,以确保我没有找到结果,但它似乎没有工作。 我目前正在尝试插入之前执行此操作:

SELECT * FROM locations WHERE cityId = $cityId AND countyId = $countyId AND stateId = $stateId AND countryId = $countyId AND district = $district;

编辑: 所有这些字段都允许复制,它们不能同时复制所有字段。

4 个答案:

答案 0 :(得分:3)

最干净的解决方案是对cityId,countyId,stateId,countryId,districtId设置UNIQUE约束,然后检查insert语句是否成功。

快速测试一下:

ALTER TABLE your_table_here ADD UNIQUE INDEX(cityId, stateId, countryId, countyId, districtId);

然后重新运行插入查询。如果它遇到重复,它将失败,您将能够在您的应用程序中处理。

答案 1 :(得分:1)

假设您已经在表格上设置了唯一索引,则可以使用:

INSERT IGNORE INTO locations SET cityId = $cityId, countyId = $countyId, stateId = $stateId, countryId = $countyId, district = $district;

答案 2 :(得分:0)

有了这样的约束,你应该把名称和地址列作为复合主键..

答案 3 :(得分:0)

我认为我有更好的解决方案。首先检查数据库并使用以下命令检查IP和名称是否存在:

{{1}}