我希望能够防止重复的SQL文本字段行。也就是说,如果第1行的名称字段已经定义为“John Smith”,我不希望它能够添加另一个“John Smith”(这个名称可能是通用的)。
我尝试检查它是否在插入时存在,但问题是,如果您同时打开两个浏览器窗口并同时单击提交,它们都会检查,检查将清除,然后它们'如果它足够接近,则插入两者。
哦,这是在PHP网站上。
谢谢!
答案 0 :(得分:12)
CREATE UNIQUE INDEX idxname ON tablename (fieldname);
添加此索引将确保fieldname
字段的重复条目不会记录到tablename
表中。
第二个客户端会出现MySQL错误。您应该在PHP代码中处理此问题,然后再次放置表单(而不是仅显示错误消息)。
另一种可能性(对于更复杂的情况)是LOCK
功能。如果在检查之前锁定表,然后插入记录,则会延迟并发操作(在第二个浏览器窗口中),直到您释放锁。然后记录将被保存,因此第二个PHP脚本将看到它并处理引用。
答案 1 :(得分:0)
DISTINCT
也可用于选择唯一的行。
...
select distinct *
from table1
...
答案 2 :(得分:-1)
看看here,你需要独一无二。