【发布时间】:2015-05-06 19:05:45
【问题描述】:
您好,我正在寻找最有效的方式来确保用户名的唯一性。 我确实已经检查了类似的问题,但没有一个让我感到高兴。 所以在这里我想出了我的解决方案。我很感激你的cmets。
CREATE TABLE IF NOT EXISTS `user` (
`guid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`firstname` varchar(48) NOT NULL,
`lastname` varchar(48) NOT NULL,
`username` varchar(128) NOT NULL,
`unique_username` varchar(128) NOT NULL,
PRIMARY KEY (`guid`),
KEY `firstname` (`firstname`),
KEY `lastname` (`lastname`),
KEY `username` (`username`),
UNIQUE KEY `unique_username` (`unique_username`),
UNIQUE KEY `email` (`email`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
username 包含 firstname.lastname 没有数字后缀,而 unique_username 包含 firstname.lastname.(count of equal usernames)
为了获得相同用户名的计数,我正在对用户表执行以下查询(在插入之前)。
SELECT COUNT(*) FROM user WHERE username = 'username'
很遗憾,我无法对 firstname and lastname 使用查找功能,因为它们区分大小写。
【问题讨论】:
-
时间戳 (yyyyMMddhhss) + 姓氏作为唯一用户名怎么样?
-
谢谢。我更喜欢 Facebook 的方式(在末尾添加一个数字)。由于用户名可以在 google 中找到。