Mysql
 sql >> Database >  >> RDS >> Mysql

Incremento automatico di MySQL su una chiave non primaria

Ho dovuto affrontare un problema simile ordinando un albero di categorie in modo innaturale. Se stai inserendo tutte le righe per un ID alla volta, potresti fare qualcosa del genere per ogni subId:

SET @seq = 0;
INSERT INTO test
  (id,  subId,            text) VALUES
  (_id, @seq := @seq + 1, 'Some text')
;

Se devi "aggiungere" una riga a un id, puoi impostare @seq con

SELECT IFNULL(MAX(subId), 0) INTO @seq FROM test WHERE id = _id;

Ciò ovviamente richiederebbe la gestione dell'ID da parte dell'applicazione e non di MySQL.

Potresti fare lo stesso dell'ultimo blocco di codice per ottenere anche il prossimo ID disponibile.