Quero criar usuários automaticamente, todos com um ID exclusivo.
Agora aqui está o problema. Se dois usuários forem criados exatamente no mesmo nanossegundo, isso pode não causar problemas. Assim, o que eu faço agora é:
- Obtenha o próximo número de Autoincremento
- Adicione um novo usuário com o nome "U" + número de autoincremento + random(0-9)
Quando mais de 10 usuários são criados no mesmo nanossegundo, isso ainda causará problemas (em teoria!). Portanto, estou procurando uma maneira de permitir que o MySQL lide com o nome de usuário.
Considere a seguinte tabela:
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 ;
Eu quero usar:
INSERT INTO test (id, name) VALUES (null, "U" + id)
onde id é o número de autoincremento. Mas, como o id não está definido no MySQL, ele conterá 0.
Como definir id, para que contenha o número de autoincremento dessa linha. Isso pode ser feito facilmente por duas consultas, mas estou procurando fazer isso em apenas uma consulta :)
Obrigado!
Com MyISAM, há um truque legal que você pode fazer:
Com o exposto acima
PRIMARY KEY
, se todos os usuários tiverem nomes diferentes, eles receberãoid = 1
. Se outro usuário vier e escolher um nome que já existe, ele receberáid=2
, etc.ATUALIZAR
Parece que interpretei mal a sua pergunta e você só precisa ter
name = 'U243'
um usuário comid=243
. Se for esse o caso, você não precisa armazenar o nome. Use isso (myISAM ou InnoDB, funcionará para ambos):e então, para recuperar o id e o nome: