Tengo una única tabla que contiene muchos usuarios. En esa tabla tengo una columna llamada user_id (INT), que deseo incrementar por separado para cada persona. user_id debe comenzar en 1Problema con MySql INSERT MAX() + 1
He preparado un ejemplo sencillo:
Showing all names
+--------------+-----------------------+
| user_id | name |
+--------------+-----------------------+
| 1 | Bob |
| 1 | Marry |
| 2 | Bob |
| 1 | John |
| 3 | Bob |
| 2 | Marry |
+--------------+-----------------------+
Showing only where name = Bob
+--------------+-----------------------+
| user_id | name |
+--------------+-----------------------+
| 1 | Bob |
| 2 | Bob |
| 3 | Bob |
+--------------+-----------------------+
La siguiente consulta va a hacer esto, pero sólo funcionará si 'Bob' ya existe en la tabla ...
INSERT INTO users(user_id, name) SELECT(SELECT MAX(user_id)+1 from users where
name='Bob'), 'Bob';
Si Bob no existe (primera entrada) user_id se establece en 0 (cero). Este es el problema. Necesito el user_id para comenzar desde 1 no 0.
¡Esto funciona! GRACIAS – Chad
Sí, la consulta funciona, pero no ignores la segunda parte . :) O si decide ignorarlo, al menos cree un índice único en '(name, user_id)' para que la consulta que de otro modo produciría un duplicado falle. –
Tha Era mi siguiente pregunta, está aquí: http://stackoverflow.com/questions/1590648/mysql-innodb-locking-only-the-affected-rows – Chad