Mysql 表是否可以插入重复的行?

Mysql 表是否可以插入重复的行?,mysql,Mysql,我建立了一个注册表单,数据库是mysql。在表单中,当用户输入username时,通过ajax请求验证它是否存在。如果它已经存在,则不接受新值。现在假设两个用户同时输入用户名。当第一个用户的查询运行时,它检查用户名是否可用,然后同时运行user2的查询。它还将搜索用户名是否存在。那么mysql是否有可能为两个用户输入相同的用户名,因为除非将第一个用户的用户名插入表中,否则搜索user2将给出该用户名,因为两个查询同时启动。是这样,还是我在理解这个概念时犯了错误。请帮助???这取决于您如何设置您的

我建立了一个注册表单,数据库是mysql。在表单中,当用户输入username时,通过ajax请求验证它是否存在。如果它已经存在,则不接受新值。现在假设两个用户同时输入用户名。当第一个用户的查询运行时,它检查用户名是否可用,然后同时运行user2的查询。它还将搜索用户名是否存在。那么mysql是否有可能为两个用户输入相同的用户名,因为除非将第一个用户的用户名插入表中,否则搜索user2将给出该用户名,因为两个查询同时启动。是这样,还是我在理解这个概念时犯了错误。请帮助???

这取决于您如何设置您的桌子。如果您已将用户名列设置为唯一,则无论查询执行的距离有多近,您都不能拥有用户名的副本,第二次命中总是失败

UNIQUE和PRIMARY KEY约束都保证了一列或一组列的唯一性


如果该列上没有
UNIQUE
索引/约束或主键,则为是。分享你的桌子结构。你是对的。但我认为他在输入姓名后执行验证,然后提交表单。我认为这种验证必须进行两次。一次输入姓名,第二次提交表单。当然,所有的想法都必须在事务中执行。创建约束只是部分地解决了这个问题。他要求解释这个概念,而不是如何执行用户名可用性检查,但我同意你是正确的。这只解决了问题的一方面——另一方面是代码。