Originariamente inviato da narghat
Uso MyISAM e non InnoDB posso prendere lo stesso tale chiave?.
Nè chiavi esterne nè transazioni. Comunque ti consiglio di lasciar perdere MyISAM. E' più veloce solo in rari casi e ha un sacco di limiti.

Ho provato con insert ma mi da lo stesso problema
una subquery che contenga SELECT count(name)+1 FROM users WHERE name LIKE 'Unnamed_%'
non gli piace proprio.

Che io sbagli qualcosa?
Eh sì. Non puoi accedere a una tabella con una INSERT e metterci una subquery che accede alla stessa tabella. E' un principio generale di MySQL.

Fai così

SET @num = SELECT count(*) FROM users FOR UPDATE;
INSERT INTO users
(..., name)
VALUES
(..., concat('Unnamed_', @num))
WHERE id=1;

Non dimenticare for update, altrimenti potrebbe succedere questo:
il thread 1 conta i record (20)
subito dopo il thread 2 conta i record (20)
il thread 1 crea l'utente unnamed_20
il thread 2 crea un utente con lo stesso nome