我想自动创建用户,它们都有一个唯一的 ID。
现在问题来了。如果两个用户是在完全相同的纳秒内创建的,则可能不会引起问题。因此,我现在要做的是:
- 获取下一个自动增量编号
- 添加一个名为“U”的新用户 + 自动增量数字 + 随机(0-9)
当在完全相同的纳秒内创建超过 10 个用户时,这仍然会导致问题(理论上!)。因此,我正在寻找一种让 MySQL 处理用户名的方法。
考虑下表:
CREATE TABLE IF NOT EXISTS `test` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
我想使用:
INSERT INTO test (id, name) VALUES (null, "U" + id)
其中 id 是自增数。但是,由于 id 没有在 MySQL 中定义,它将包含 0。
如何定义 id,使其包含该行的自增数。这可以通过两个查询轻松完成,但我希望只在一个查询中执行此操作:)
谢谢!
使用 MyISAM,您可以做一个巧妙的技巧:
有了上面
PRIMARY KEY
,如果所有用户都有不同的名字,他们将被赋予id = 1
。如果另一个用户来并选择了已经存在的名称,他将得到id=2
,等等。更新
看来我误读了您的问题,您只需要
name = 'U243'
使用id=243
. 如果是这种情况,您根本不必存储名称。使用它(myISAM 或 InnoDB,两者都适用):然后,检索 id 和名称: