Ho una singola tabella contenente molti utenti. In quella tabella ho una colonna chiamata user_id (INT), che voglio incrementare separatamente per ogni persona. id_utente deve iniziare a 1Problema con MySql INSERT MAX() + 1
ho preparato un semplice esempio:
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 query seguente farà questo, ma funzionerà solo se 'Bob' esiste già nella tabella ...
INSERT INTO users(user_id, name) SELECT(SELECT MAX(user_id)+1 from users where
name='Bob'), 'Bob';
Se Bob non esiste (prima immissione) user_id è impostato su 0 (zero). Questo è il problema. Ho bisogno di user_id per iniziare da 1 non 0.
Questo funziona! GRAZIE! – Chad
Sì, la query funziona, ma per favore non ignorare la seconda parte . :) O se si decide di ignorarlo, almeno creare un indice univoco su '(nome, user_id)' in modo che la query che altrimenti produrrebbe un duplicato fallisce –
era la mia prossima domanda in realtà, è qui: http://stackoverflow.com/questions/1590648/mysql-innodb-locking-only-the-affected-rows – Chad