MySQL:使列独一无二?
Posted
技术标签:
【中文标题】MySQL:使列独一无二?【英文标题】:MySQL: making a column unique? 【发布时间】:2011-09-27 21:24:18 【问题描述】:我有一张正在生产的桌子。我意识到某些列应该是唯一的。进入 phpMyAdmin 并更改这些列以使其独一无二是否安全?
ALTER TABLE `foo` ADD UNIQUE ( `bar` )
【问题讨论】:
运行它并查看。如果值是唯一的,它将正确应用。否则,mysql 将报告无法应用约束,因为存在一个或多个值的重复项,您必须在 MySQL 再次尝试成功应用约束之前处理这些问题。 如果由于存在非唯一值而导致此命令失败,您可以尝试 ALTER IGNORE TABLE [...] - 这样无论如何都会创建索引,但当然是那些记录违反唯一性约束将被丢弃;所以要小心处理。 【参考方案1】:按照以下步骤从 phpmyadmin 面板应用唯一列值:
转到表结构。点击下面的唯一关键字 -
在确认框中点击确定 -
将应用列的唯一值约束。 或者你可以运行 mysql 查询:
ALTER TABLE user ADD UNIQUE(email);
【讨论】:
【参考方案2】:-
您没有重复项 -> 将应用密钥而不会出现问题
您确实有重复 -> 将给出错误消息,您的数据没有发生任何事情
所有都是唯一的,除了其中有 NULL 的几行之外,仍然应用唯一约束,因为在检查唯一值时不检查 NULL(您可以让整个表在唯一字段中具有 NULL 值而不会出现任何错误消息)。
还有一点,如果你有一个 prod 数据库,你也必须有一个可以毫无畏惧地测试的开发数据库,对吧?
【讨论】:
【参考方案3】:如果这些列中已经有一些重复值,那么这将产生错误。如果这些列中没有任何重复值,那么你会没事的。
【讨论】:
【参考方案4】:只有表上预先存在的值不唯一才会有问题,否则我认为不会有问题。
【讨论】:
【参考方案5】:我有这个问题,我的价值观不是唯一的。我也找不到在 PHPMyAdmin 中编辑此问题的简单方法。以下是我的解决方法:
我点击了需要更新的表格
我导出了表格,将其更改为 CSV 导出,然后进行了编辑 它手动更新非唯一值。
确保我仍在导出的表中(因为我 想要保持标题完整),我导入了我新保存的 CSV希望将来可以节省一些时间。
【讨论】:
这确实帮助了我。谢谢!以上是关于MySQL:使列独一无二?的主要内容,如果未能解决你的问题,请参考以下文章