我试图在MySQL表中插入一行,条件是该行本身必须是唯一的。
例如,该行将包含id
,name
和address
,但我们不能拥有重复名称和地址的插入内容。
我在插入之前尝试做一个选择,以确保我没有找到结果,但它似乎没有工作。
我目前正在尝试插入之前执行此操作:
SELECT * FROM locations WHERE cityId = $cityId AND countyId = $countyId AND stateId = $stateId AND countryId = $countyId AND district = $district;
编辑: 所有这些字段都允许复制,它们不能同时复制所有字段。
答案 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}}